2.Bean にする方法

Beans の仕様に沿ってコンポーネントを作るとどんな利点があるのでしょうか?

(1) BDK を使ってみよう

 前回はBDKをインストールするところまで終わりました。今回は実際に動かしてみて、Beans の仕様に沿ってコンポーネントを作るとどんなことが可能なのかを確認していきましょう。

 BDKをインストールしたディレクトリ(以下<BDKHOME>とします)に beanbox というディレクトリがあります。このなかの run.bat というファイルをダブルクリックしてみましょう。すると次のような画面がでてきます。
 画像をクリックすると拡大したのが、別ウインドウに表示されます。


 左側にある ToolBox にあるものが Bean です。BDK ではこれらの Bean を選択し、中央の BeanBox にコンポーネントを貼り付けてプログラムを作成します。

 では、ToolBox のなかの Juggler をクリックし、BeanBox 上でもう一度クリックしてみてください。すると BeanBox の中でマスコット( Duke という名前です)がジャグリングをします。

(2) イントロスペクション

 いま Juggler というコンポーネントを BeanBox に貼り付けることで、Dukeくんがジャグリングをはじめました。ここで、右側にある Properties というウィンドウをみてみると、このコンポーネントのいくつかのプロパティが表示されているのがわかります。

 これはイントロスペクションという機能により実現されるもので、Bean を作る場合、クラス変数とクラス変数を操作するメソッドを次のようなルールに従い書いて置くことで、ビルダーツールがコンポーネントのプロパティを自動的に発見してくれるというものです。

(3) Bean を配置してプログラミングする

 いま、BeanBox には Juggler コンポーネントが1つありますが、ここに ExplicitButton を1つ貼りつけてみます。

 いま貼り付けたボタンをクリックし、上部にあるメニューから [Edit] - [Events] - [button push] - [actionPerformed] を選択します。

 すると赤い線がでてくるので、この線を Juggler に上に持っていき、クリックします。こうすることで、ボタンを押したときのイベントをJuggler コンポーネントに関連づけます。

 すると、次のようなダイアログがでてきます。この画面はボタンを押したときに Juggler コンポーネントのどのメソッドを実行するかを関連づけます。ここでは stopJuggling を選択し、OK を押します。

 OK ボタンを押すと、つぎのようなダイアログが表示され、「ボタンを押したら Juggling を止める」という2つのコンポーネントを連結させたプログラムを作成してくれます。

 このダイアログが消えたら、先ほどのボタンを押してみてください。すると Duke くんのジャグリングが止まりますね。このように Bean の仕様に沿って作ったコンポーネントはビルダーツール上に配置していくことで、コードを一切書くことなくプログラムを作成することも可能です。

もう1つボタンを配置して、関連づける Juggler のメソッドを startJuggling にすると、ジャグリングを開始してくれます。

(4) プロパティの変更

 BeanBox 上にいくつかボタンを配置しましたが、このボタンの名前を変更して分かりやすくしておきましょう。どれかボタンをクリックすると、Properties のウインドウにボタンのラベルのプロパティが現れます。ここに start や stop などボタンのラベルを入れてみましょう。

すると BeanBox 上のボタンのラベルも変更されます。

このようにイントロスペクションにより発見されたプロパティ、メソッドによる操作によりすぐに画面上のコンポーネントに変更を反映させることが可能です。


(5) Bean としてプログラムをつくるには。

 では、このような Bean を作るにはどうしたらいいのでしょうか?答えは簡単で、プログラムを書くときに以下の条件を満たしておけばよいだけです。

<コンストラクタに関する規則>

■ public 指定の引数無しコンストラクタを必ず記述する

<Serializableインタフェースを実装する>

■オブジェクトの状態を保存する必要がある場合は Serializable インタフェースを実装する

<プロパティの名前に関する規則>

■ クラス変数の名前はすべて小文字にする
name, color など

■ 2つ以上の単語からなる場合は2つ目以降の単語は大文字からはじめる
animationRate, userName など

<プロパティ用のメソッドに関する規則>

■ プロパティの値を取得するメソッドは get<プロパティ名>とする
getName( ), getColor( ) など

■ プロパティの値を設定するメソッドは set<プロパティ名>とする
setAnimationRate(int rate), setUserName(String name) など

■ boolean型の値に対しては、
取得用メソッドは is<プロパティ名>、設定用メソッドは set<プロパティ名> とする
isChangedFlag( ), setChangedFlag(boolean b) など

 このような規則を守っておくことで、いままでのJavaプログラムが Bean の仕様に沿ったものになります。

  プログラム例

public SampleBean implements Serializable {
    private Color rectColor;
    private int width;
    private int height;
    private boolean big; 

    public SampleBean() { 
        width = 100;
        height = 100;
        rectColor = Color.blue;
        big = true;
    }

    public int getWidth() { return width; }
    public int getHeight() { return height; }
    public Color getRectColor() { return rectColor; }
    public boolean isBig() { return big; }

    public void setWidth(int w) { width = w; }
    public void setHeight(int h) { height = h; }
    public void setRectColor(Color c) { rectColor = c; }
    public void setBig(boolean b) { big = b;}
}


Serializable インタフェースについてはオブジェクトシリアライゼーションのところで説明します。

PropertyEditorSupportクラスなどを使いビルダーツールでプロパティを設定できないようなするようなカスタマイズも可能ですが、このサイトでは説明しません。


 このほかにも Bean の機能はたくさんありますが、次からは Bean に関連した技術で、今後の説明で必要になる知識である JAR ファイル、オブジェクトシリアライゼーションなどについて見ていきたいと思います。


前の章(1.Beansではじめよう)   次の章(3.JARファイル)