| 2.Bean にする方法 |
Beans の仕様に沿ってコンポーネントを作るとどんな利点があるのでしょうか?
| (1) BDK を使ってみよう |
左側にある ToolBox にあるものが Bean です。BDK ではこれらの Bean を選択し、中央の BeanBox にコンポーネントを貼り付けてプログラムを作成します。
では、ToolBox のなかの Juggler をクリックし、BeanBox 上でもう一度クリックしてみてください。すると BeanBox の中でマスコット( Duke という名前です)がジャグリングをします。
| (2) イントロスペクション |
これはイントロスペクションという機能により実現されるもので、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 上のボタンのラベルも変更されます。
このようにイントロスペクションにより発見されたプロパティ、メソッドによる操作によりすぐに画面上のコンポーネントに変更を反映させることが可能です。
| (5) 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;}
}
|