カレンダーの表示
日時を表すのに用いられるのが「カレンダー」と「カレンダーボタン」です。それぞれ「Calendar」「CalendarButton」として用意されています。Calendarはそのままカレンダーを表示するもので、CalendarButtonはクリックするとカレンダーがポップアップして表示されるものです。
これらは、ロケール情報によって自動的に月名や曜日名が変わるようになってますが、使用フォントが英語フォントであるため、そのままだと日本語の文字が文字化けしてしまいます。とりあえずの解決策として、ロケールを英語圏に変更して利用するとよいでしょう。これは「setLocale」というメソッドで行えます。例えばロケールをUSにするなら、以下のようにします。
《Calendar》.setLocale(Locale.US);
曜日などは英語表示になりますが、実用上問題はありません。

カレンダーを選択すると、CalendarSelectionというイベントが発生します。Calendarの「getCalendarSelectionListeners」メソッドで取得できます。これはListenerListインスタンスとして値が設定されており、「add」メソッドでCalendarSelectionListenerインスタンスを追加することでイベント処理を用意できます。
このCalendarSelectionListenerには「selectedDateChanged」メソッドが用意されており、日付を選択するとこのメソッドが呼び出されるようになります。このとき、引数にCaledarと、選択する前のCalendarDateインスタンスが渡されます。
またカレンダーで選択された日付を取得したい場合は、「getSelectedDate」というメソッドを利用します。これは「CalendarDate」クラスのインスタンスとして日付情報を返します。CalendarDateクラスには、「year」「month」「day」といったインスタンスフィールドが用意されており、これらを調べることで年月日の値が分かります。例えば、カレンダーをクリックするとその日付を表示するサンプルコードを以下に挙げます。
Calendar cal = (Calendar)serializer.get("cal1");
cal.setLocale(Locale.US);
cal.getCalendarSelectionListeners().add(new CalendarSelectionListener(){
@Override
public void selectedDateChanged(Calendar cal, CalendarDate d) {
CalendarDate date = cal.getSelectedDate();
String s = "" + date.year + "/" + (date.month + 1) + "/" + (date.day + 1);
Prompt.prompt("Selected: " + s, window);
}
});

