SHOEISHA iD

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

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

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

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

第14回

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

 アプレットベースのRIAフレームワーク「Pivot」の2回目。今回は、主なコンポーネントの基本的な利用の仕方について一通り説明していきましょう。

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

はじめに

 アプレットで最初に覚えるべきは「基本的なコンポーネントの使い方」です。Apache Pivot(以下、Pivot)にも、さまざまなコンポーネントが用意されています。それらの中から、最も基本となるものをピックアップし、使い方を見ていくことにしましょう。

 コンポーネントの使い方といっても、「ただインスタンスを作って組み込んで表示できればOK」というわけではありません。入力関係は、入力された値を取り出して処理する手順も知る必要があります。また、例えば多数のコンポーネントをフォームとしてレイアウトし配置することも重要でしょう。またテキスト入力に関しては、入力された値をチェックするバリデーションについても知って置く必要があります。こうした「基本的なコンポーネントを普通に利用できるための基礎知識」について説明していきましょう。

 Pivotの基礎知識・導入などについては第1回の記事を参照してください。

対象読者

  • Javaで手ごろなフレームワークを探している技術者。
  • 最近のフレームワークをごくざっと理解しておきたい方。
  • Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ。

プッシュボタンと入力フィールド

 では、Pivotに用意されている各種のコンポーネントを利用してみることにしましょう。まずは、最も基本となる入力フィールドとプッシュボタンを使ったサンプルを作成してみます。また、せっかくボタンを作るのですから、クリックした際に何らかを行うイベント処理も併せて作ることにしましょう。ごく単純なものとして、入力フィールドからテキストを取り出し、ラベルに表示するようなものを用意することにします。

 入力フィールドとプッシュボタンは、それぞれ「TextInput」「PushButton」というクラスとして用意されています。これらのクラスを作成し、必要なプロパティの設定をして組み込めばいいわけです。ただし、注意しなければならないのは、「WindowにsetContentできるのは、1つのコンポーネントだけ」という点です。複数のコンポーネントを組み込むことはできません。

 そこで、コンポーネントをまとめて配置するコンテナを利用することになります。Pivotでは、コンテナは「ペイン(Pane)」と呼ばれるクラスとして用意されています。これはいくつかありますが、今回は縦または横にコンポーネントを並べて配置する「BoxPane」というクラスを利用することにしましょう。

 では、前回作成したHelloApp.javaのソースコードを書き換えて再利用することにします。次のように修正してください。

package jp.tuyano.pivot;

import java.awt.*;
import org.apache.pivot.collections.Map;
import org.apache.pivot.wtk.*;
import org.apache.pivot.wtk.Button;
import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.Component.StyleDictionary;

public class HelloApp implements Application {
    private Window window;
    private Label label;
    private TextInput input;
    private PushButton button;

    @Override
    public void startup(Display display, Map<String, String> map)
            throws Exception {
        label = new Label();
        label.setText("Hello Pivot!");
        StyleDictionary style = label.getStyles();
        style.put("font", new Font("Serif", Font.BOLD, 24));
        style.put("color", Color.RED);
        style.put("horizontalAlignment", HorizontalAlignment.CENTER);
        style.put("verticalAlignment", VerticalAlignment.CENTER);
        
        input = new TextInput();
        input.setSize(200, 20);
        StyleDictionary style2 = input.getStyles();
        style2.put("font", new Font("Serif", Font.PLAIN, 16));
        
        button = new PushButton("OK");
        button.getButtonPressListeners().add(new ButtonPressListener() {
            @Override
            public void buttonPressed(Button arg0) {
                String s = input.getText();
                label.setText("You typed: " + s);
            }
        });
        
        BoxPane box = new BoxPane(Orientation.VERTICAL);
        box.add(label);
        box.add(input);
        box.add(button);
        
        window = new Window();
        window.setContent(box);
        window.setTitle("Hello Pivot!");
        window.setMaximized(true);
        window.setSize(320, 200);
        window.open(display);
    }

    @Override
    public boolean shutdown(boolean arg0) throws Exception {
        return false;
    }

    @Override
    public void suspend() throws Exception {}

    @Override
    public void resume() throws Exception {}

    public static void main(String[] args) {
        DesktopApplicationContext.main(HelloApp.class, args);
    }
}
図1 入力フィールドにテキストを書いてクリックするとメッセージが変わる。これはアプリケーションで実行したところ。
図1 入力フィールドにテキストを書いてクリックするとメッセージが変わる。これはアプリケーションで実行したところ。

 HelloAppを再利用していますので、アプレットを表示するindex.htmlは修正する必要はありません。実際にアプリケーションとして実行するなり、アプレットとして表示するなりしてみてください。入力フィールドとプッシュボタンがある画面が表示されます。テキストを記述してボタンをクリックすると、表示されているテキストが変わります。

 なお、ここではPivotのGUIがまとめられているorg.apache.pivot.wtkパッケージの他に、java.awtパッケージのクラスも使用しています。両者のパッケージをワイルドカードで指定する場合、Labelなど同名のクラスが複数検索され、問題を起こすことになります、あいまいさを避けるため、明示的にorg.apache.pivot.wtk.Labelといった形でimportを追記してください。

次のページ
TextInputの作成

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング