Java
1import java.awt.Color; 2import java.awt.Dimension; 3import java.awt.GridLayout; 4import java.util.Calendar; 5 6import javax.swing.BoxLayout; 7import javax.swing.JFrame; 8import javax.swing.JLabel; 9import javax.swing.JPanel; 10import javax.swing.SwingConstants; 11import javax.swing.UIManager; 12import javax.swing.UnsupportedLookAndFeelException; 13import javax.swing.border.LineBorder; 14 15public class debugTest { 16 public static void main(String[] args) { 17 JFrame frame = new JFrame("Swing Calender"); 18 frame.add(new SwingCalendar()); 19 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20 frame.pack(); 21 frame.setVisible(true); 22 } 23} 24 25class SwingCalendar extends JPanel { 26 private JLabel monthLabel = new JLabel(); 27 private JLabel yearLabel = new JLabel(); 28 Calendar cal = Calendar.getInstance(); 29 30 //曜日、日付ラベル作成 31 private JLabel[] weekLabels = new JLabel[7]; 32 private JLabel[][] dayLabels = new JLabel[6][7]; 33 34 //各パーツのColorの作成 35 private static final Color WEEK_BG = new Color(102,102,102); 36 //private static final LineBorder WEEK_BORDER = new LineBorder(new Color(160,160,230), 2, false); 37 38 //日付パネルの色 39 private static final Color DAY_BG = new Color(102,102,102); 40 private static final Color DAY_FG = Color.BLACK; 41 private static final LineBorder DAY_BORDER = new LineBorder(new Color(102,102,102), 2, false); 42 43 //日付のLabel 44 private static final Dimension DAY_LABEL_SIZE = new Dimension(50,50); 45 private static final String[] WEEK_NAMES = new String[] {"日", "月", "火", "水", "木", "金", "土"}; 46 private static final String[] MONTH_NAMES = new String[] {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"}; 47 48 public SwingCalendar() { 49 try { 50 UIManager.setLookAndFeel( 51 "javax.swing.plaf.nimbus.NimbusLookAndFeel" 52 ); 53 } catch (ClassNotFoundException | InstantiationException 54 | IllegalAccessException | UnsupportedLookAndFeelException e) { 55 e.printStackTrace(); 56 } 57 58 /* MONTH Label */ 59 Dimension dm = monthLabel.getPreferredSize(); 60 dm.width += 10; //dm.height += 1; 61 monthLabel.setPreferredSize(dm); 62 monthLabel.setForeground(DAY_FG); 63 64 /* YEAR Label */ 65 Dimension dy = yearLabel.getPreferredSize(); 66 dy.width += 10; //dy.height += 1; 67 yearLabel.setPreferredSize(dy); 68 yearLabel.setForeground(DAY_FG); 69 70 /* DAY PANEL */ 71 JPanel dayPanel = new JPanel(); 72 GridLayout layout = new GridLayout(7, 7); 73 layout.setHgap(0); 74 layout.setVgap(0); 75 dayPanel.setLayout(layout); 76 dayPanel.setBackground(DAY_BG); 77 78 //曜日の配列 79 for( int i=0; i<7; i++) { 80 weekLabels[i] = new JLabel(WEEK_NAMES[i]); 81 weekLabels[i].setHorizontalAlignment(SwingConstants.CENTER); 82 weekLabels[i].setVerticalAlignment(SwingConstants.CENTER); 83 weekLabels[i].setPreferredSize(DAY_LABEL_SIZE); 84 weekLabels[i].setOpaque(true); 85 weekLabels[i].setBackground(WEEK_BG); 86 87 if( i == 0 ) { 88 weekLabels[i].setForeground(Color.RED); 89 } else if ( i == 6 ) { 90 weekLabels[i].setForeground(Color.BLUE); 91 } 92 93 System.out.println("kakunin" + i); 94 dayPanel.add(weekLabels[i]); 95 } 96 97 98 //日付の配列 99 for( int i=0; i<6; i++) { 100 for( int j=0; j<7; j++) { 101 dayLabels[i][j] = new DayLabel("test"); 102 103 if(j == 0 ) { 104 dayLabels[i][j].setForeground(Color.RED); 105 } else if (j == 6 ) { 106 dayLabels[i][j].setForeground(Color.BLUE); 107 } 108 109 dayPanel.add(dayLabels[i][j]); 110 } 111 System.out.println("i" + i); //確認 112 System.out.println("j" + j); //確認 113 } 114 115 JPanel monthPanel = new JPanel(); 116 monthPanel.setLayout(new GridLayout()); 117 monthPanel.add(yearLabel); 118 monthPanel.add(monthLabel); 119 monthPanel.setBackground(DAY_BG); 120 121 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 122 GridLayout gl = new GridLayout(1,2); 123 gl.setHgap(10); gl.setVgap(10); 124 125 //年月ボタン表示パネル、日にちパネルの追加 126 add(monthPanel); 127 add(dayPanel); 128 129 } 130 131} 132 133
https://i.gyazo.com/b20e2780d7df8ec95f99a3d3e71629c6.png
コードが枠内に入っていないようなので修正して頂けませんか?
@opyonさん ご指摘ありがとうございます。修正いたしました。
コードブロック内はコードだけを書いてください。コード以外のものが入ると再現確認の際の弊害にしかなりません。また、インデントが全くない状態なので非常に読みづらいですし、ミスが起きやすくなっています。調整してください。あと「うまくいきません」では何が起きているか伝わらないのて起きている現象を具体的に記載してください。このあたりは「質問するときのヒント」を熟読して質問内容を調整すると良いです(質問内容が充実することで的確な回答を得やすくなります) https://teratail.com/help/question-tips
説明文全部削除したらただコード投げただけのも丸投げですよ・・・。コードも大事ですがそのコードで起きている現象やエラー、何がどう想定通りにできていないのか具体的に書くのも必要です。
回答1件
あなたの回答
tips
プレビュー