• 締切済み

カレンダーを作っているのですが

import java.awt.*; import java.awt.event.*; public class GraphicsC4 extends Frame { public static void main(String ar[]){ Frame f=new GraphicsC4(); f.setTitle ("平成19年6月 (GridLayout)"); f.setSize(640,400); f.setVisible(true); } GraphicsC4(){ setFont(new Font("SansSerif",Font.BOLD+Font.ITALIC,30)); GridLayout gl=new GridLayout(6,7); setLayout(gl); String day[]={"SUN","MON","TUE","WED","THU","FRI","SAT"}; for(int j=0;j<=6;j++){ Button b1=new Button(day[j]); add(b1); } for(int e=1;e<=5;e++){ Button b2=new Button(""); add(b2); } for(int i=1;i<=30;i++){ Button b3=new Button(""+i+""); add(b3); } addWindowListener(new WinAdapter()); } class WinAdapter extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } } ここまで書いたのですが、日曜日を赤く表示することが出来ません。どなたか教えてください。

みんなの回答

回答No.1

何月何日が曜日であるかを知るためには自分で計算してもよいですが、せっかくCalendarクラスという便利なクラスがあるのでそれを利用します。 import java.awt.*; import java.awt.event.*; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Locale; public class GraphicsC4 extends Frame { private Component days; public static void main(String ar[]){ GraphicsC4 f=new GraphicsC4(); f.view(2007, 6); f.setTitle ("平成19年6月 (GridLayout)"); f.setSize(640,400); f.setVisible(true); } private Calendar cal; GraphicsC4(){ cal = Calendar.getInstance(); setFont(new Font("SansSerif",Font.BOLD+Font.ITALIC,30)); String day[]={"SUN","MON","TUE","WED","THU","FRI","SAT"}; // ヘッダ部分の表示 Button buttonSunday = new Button(day[0]); buttonSunday.setForeground(Color.RED); add(buttonSunday); for(int j=1;j<=6;j++) add(new Button(day[j])); addWindowListener(new WinAdapter()); } /* 日付部分を消去 */ private void clear() { // ヘッダ(曜日の文字列)部分をのぞいて消去 for (int i=7; i<getComponentCount(); i++) this.remove(i); } /* 指定年月のカレンダーを表示 */ void view(int year, int month) { clear(); // 月始めの曜日を取得 cal.set(year, month-1, 1); int week = cal.get(Calendar.DAY_OF_WEEK); // 月の日数を取得 int maxdays = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 月始めが日曜でなければ空きを挿入 for (int i=week; i!=Calendar.SUNDAY; i--) add(new Button("")); // 順次日付を挿入 for (int i=1; i<=maxdays; i++, week = week%7 + 1) { Button b = new Button(i+""); // 日曜のときだけ赤くする if (week == Calendar.SUNDAY) b.setForeground(Color.RED); add(b); } // 残りの空間も埋める for (int i = week; i!= Calendar.SUNDAY; i = i%7 + 1) add(new Button("")); // レイアウト行列数を調整 setLayout(new GridLayout(getComponentCount()/7,7)); } class WinAdapter extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } }

関連するQ&A