SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~アプレットベースのRIAフレームワーク「Apache Pivot」(3)

第15回

カレンダーの表示

 日時を表すのに用いられるのが「カレンダー」と「カレンダーボタン」です。それぞれ「Calendar」「CalendarButton」として用意されています。Calendarはそのままカレンダーを表示するもので、CalendarButtonはクリックするとカレンダーがポップアップして表示されるものです。

 これらは、ロケール情報によって自動的に月名や曜日名が変わるようになってますが、使用フォントが英語フォントであるため、そのままだと日本語の文字が文字化けしてしまいます。とりあえずの解決策として、ロケールを英語圏に変更して利用するとよいでしょう。これは「setLocale」というメソッドで行えます。例えばロケールをUSにするなら、以下のようにします。

《Calendar》.setLocale(Locale.US);

 曜日などは英語表示になりますが、実用上問題はありません。

図3 カレンダーとカレンダーボタンの例。左はロケールをUSに、右はJAPANにしたところ。日本語だと表示フォントの関係で曜日などが文字化けする。
図3 カレンダーとカレンダーボタンの例。左はロケールをUSに、右はJAPANにしたところ。日本語だと表示フォントの関係で曜日などが文字化けする。

 カレンダーを選択すると、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);
    }
});
図4 日付をクリックすると、画面に年月日が表示される。
図4 日付をクリックすると、画面に年月日が表示される。

次のページ
カラーチューザーの表示

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5113 2010/05/26 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー