SHOEISHA iD

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

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

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

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

第14回

  • X ポスト
  • このエントリーをはてなブックマークに追加

TextInputの作成

 では、ソースコードを順に見ていきましょう。まずは、「TextInput」の利用部分からです。ここではインスタンス作成後、setSizeで大きさを調整しています。その後、getStylesでStyleDictionaryを取得し、これにフォントを設定しています。以下の部分です。

input = new TextInput();
input.setSize(200, 20);
StyleDictionary style2 = input.getStyles();
style2.put("font", new Font("Serif", Font.PLAIN, 16));

 実際にやってみると分かることですが、StyleDictionaryに"font"のスタイルを追加しておくことは、非常に重要です。Pivotのコンポーネント類は、デフォルトで英語フォントが設定されているようで、明示的にフォントを指定しておかないと日本語が文字化けしてしまうようです。これはバージョンアップ等により修正されるかも知れませんが、現在のところは「日本語が文字化けしたら、フォント設定を疑う」と考えておいてください。

PushButtonの作成とボタンプレスイベント

 続いて、PushButtonです。PushButtonは、プロパティの設定だけでなく、ボタンをクリックした時のイベント処理も用意することになります。以下がPushButton関係の処理部分です。

button = new PushButton("OK");
button.getButtonPressListeners().add(new ButtonPressListener() {
    @Override
    public void buttonPressed(Button arg0) {
        String s = input.getText();
        label.setText("You typed: " + s);
    }
});

 まずnewでインスタンスを作成しますが、このとき第1引数に、ボタンに表示するテキストを渡します。インスタンス作成後、ボタンクリック時のイベント処理を実装しています。Pivotのコンポーネントも、AWTなどと同様にイベントリスナーによるデリゲート・イベント処理を採用しています。が、実装の方法はかなり異なります。

 Pivotのコンポーネントでは、イベントは「ListenerList」というクラスを使って管理されています。これは文字通り、イベントリスナーのインスタンスをまとめて管理するリストです。それぞれのコンポーネントでは、各イベントごとにこのListenerListを使って組み込まれたイベントリスナーを管理するようになっています。

 PushButtonをクリックした時のイベント処理は「ButtonPressListeners」というイベントリスナーとして用意されています。PushButtonの「getButtonPressListeners」というメソッドにより、コンポーネントに組み込まれているButtonPressListenersを管理するためのListenerListを取得することができます。こうして取得されたListenerListに、「add」というメソッドを使ってButtonPressListenerインスタンスを追加すれば、ボタンクリック時にそのイベントリスナーが呼ばれるようになります。

 ButtonPressListenerには、「buttonPressed」というメソッドが1つだけ用意されています。これが、クリック時に呼び出されるメソッドになります。引数が1つだけ用意されており、イベントが発生したButton(PushButtonのスーパークラス)インスタンスが渡されます。

 ここでは、buttonPressedで、TextInputのテキストを取得し、Labelの表示テキストを変更しています。テキストの取得や変更は「getText」「setText」で行うことができます。

BoxPaneの利用

 最後にコンテナであるBoxPaneの処理部分についてです。BoxPaneは、垂直または水平方向にコンポーネントを並べて配置するコンテナです。Swingに用意されているBoxLayoutのようなものと考えればよいでしょう。これはインスタンスを作成する際、レイアウトする方向を引数で指定します。

BoxPane box = new BoxPane(Orientation.VERTICAL);

 並べる方向は、Orientationクラスにクラスフィールドとして用意されている値を利用します。

 垂直方向に並べる「VERTICAL」、水平方向に並べる「HORIZONTAL」が用意されています。これでインスタンスを作成したら、後は追加するコンポーネントを「add」メソッドで組み込んでいきます。

box.add(label);
box.add(input);
box.add(button);

 これで、組み込んだ順番にコンポーネントが縦に整列表示されます。ペインはこの他にもありますが、基本的に「newした後、addで組み込む」という流れは変わりません。一通りコンポーネントを組み込み終わったら、後はこれをWindowにsetContentすれば、すべてのコンポーネントが整列表示されるというわけです。

次のページ
WTKXからロードする

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5112 2010/05/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング