SHOEISHA iD

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

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

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

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

第13回

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

WTKXファイルを使う

 このサンプルでは、すべてのコンポーネントをJavaのメソッドで作成し、組み込んでいました。基本的な作り方はAWT/Swingなどと同じと言えますが、PivotではJavaのコードを書くほかに、XMLファイルとしてGUIを定義する方法も用意されています。

 GUI用のXMLファイルは「WTKX」ファイルとして作成します。これは、拡張子を「.wtkx」として作成したテキストファイルです。この中に、XMLデータとしてGUIを記述します。

 では、実際に作成してみましょう。HelloApp.javaと同じフォルダ内に、「HelloApp.wtkx」という名前でテキストファイルを作成してください。キャラクタエンコーディングはUTF-8とします。そして次のようにソースコードを記述してください。

<Window title="Sample" maximized="true"
        xmlns:wtkx="http://pivot.apache.org/wtkx"
        xmlns="org.apache.pivot.wtk">
    <content>
        <Label wtkx:id="label1"
                styles="{font:'bold 24', color:'#0000FF', verticalAlignment:'center', horizontalAlignment:'center'}"
                text="日本語もOKだ!" />
    </content>
</Window>

 これがWTKXによるGUIの定義です。ここでは、先程と同様にWindowの中にLabelを1つ組み込むという形でGUIを作っています(同じだと違いがわからないので、表示テキストと色だけ変えてあります)。このタグの構成を見ると、このようになっていることが分かります。

<Window>
    <content>
        <Label />
    </content>
</Window>

 <Window>タグが、Windowクラスに相当するものであることは想像がつくでしょう。その中のcontentというプロパティに<Label>タグを用意しています。これがLabelインスタンスの定義となるわけです。それぞれのタグに記述されている属性を見ると、先にstartupメソッドで記述したプロパティの設定と同じような構成となっていることが分かるでしょう。

WTKXファイルをロードする

 では、作成したWTKXファイルをロードして表示を作成するようにソースコードを修正しましょう。先ほどのサンプルで、startupメソッドを次のように書き換えてください。

// org.apache.pivot.wtkx.WTKXSerializer をimportする

@Override
public void startup(Display display, Map<String, String> map)
        throws Exception {
    WTKXSerializer wtkxSerializer = new WTKXSerializer();
    window = (Window)wtkxSerializer.readObject(this, "HelloApp.wtkx");
    window.open(display);
}
図9 WTKXファイルをロードしてGUIを作成したサンプル。日本語も、フォント設定させすれば表示される。
図9 WTKXファイルをロードしてGUIを作成したサンプル。日本語も、フォント設定させすれば表示される。

 これで、WTKXファイルをロードして表示することができます。WTKXのロードは、org.apache.pivot.wtkx.WTKXSerializerというクラスを利用します。newでインスタンスを作成し、「readObject」というメソッドを使ってファイルをロードするのです。このreadObjectは、いくつかの引数を持ったものがオーバーロードされていますが、ここでは第1引数にベースオブジェクト(this)、第2引数にファイル名を指定する形で呼び出しています。これにより、HelloAppクラスと同じ場所に配置されているHelloApp.wtkxがロードできます。

 readObjectは、指定のファイルをロードし、オブジェクトを生成して返します。ロードしたHelloApp.wtkxでは、<Window>がルートに設定されていますので、Windowインスタンスとして生成することになります。そこでWindowにキャストして値を変数に代入しています。こうして取得されたwindowインスタンスは、先ほどのサンプルのようにnew Windowして作成したものとまったく同じように扱うことができます。

まとめ

 今回は、Pivotの導入編ということで、入手からプロジェクトの基本的な作成、またJavaクラスとWTKXファイルの基本的なコーディングまでを一通り説明しました。まだWindowとLabelを使って簡単な表示をした程度ですからPivotの威力のほどを感じるまでには至らないでしょうが、どのようにしてPivotを利用するのか、その基本ぐらいは理解できたことでしょう。

 Pivotは、これまで紹介してきたようなフレームワークとはかなり毛色が違います。何しろサーバーサイドのJava技術をまったく使っていないのですから。次回、もう少し掘り下げて説明を行いたいと考えていますが、Pivotの理解にとどまらず、これが「アプレットの再評価」につながれば、と思います。アプレットも進化しているのだ、ということを私たちはうっかり忘れていたのかも知れませんね。

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング