カレンダー画面表示

カレンダー画面表示することを考えると、表示データ素材そのものをどういう形で持つこと
普遍的なものかを考えると、1行表示分の1週間の日付を表す String を、List で
表現することであろう。→ List<String>
である。x月1日が、
水曜の場合、[0]~[2]を任意の文字で埋めるとして
以下のメソッドが用意できる。

public static List<String> calendarList(Date date,String blank){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   c.set(c.get(Calendar.YEAR),c.get(Calendar.MONTH),1);
   int firstWeek = c.get(Calendar.DAY_OF_WEEK);

   c.add(Calendar.MONTH,1);
   c.set(c.get(Calendar.YEAR),c.get(Calendar.MONTH),1);
   c.add(Calendar.DAY_OF_MONTH, - c.get(Calendar.DAY_OF_MONTH));
   int endday = c.get(Calendar.DAY_OF_MONTH);

   List<String>
 list = new ArrayList<String>();
   int day = 1;
   int week = 0;
   String
 s = new String[7];
   int o = firstWeek - 1;
   for(;week < o;week++){
      s[week] = blank;
   }

   for(int d=day;d <= endday;d++){
      if (week==7){
         list.add(s);
         s = new String[7];
         week = 0;
      }
      s[week] = Integer.toString(d);
      week++;
   }
   for(;week < 7;week++){
      s[week] = blank;
   }
   list.add(s);
   return list;

}


この結果を HTML <table> タグ出力するなら Listのサイズ分、
<tr> のループで処理、さらに String[] 7個を <td> で書き込む
ループ処理をすればよいだろう。