プロパティを使用すると、コンポーネント・ユーザーは、コンポーネントの状態を変更できます。プロパティは、コンポーネント内の変数の値を設定または読取り可能にする一方で、内部実装を非表示のままにします。プロパティを作成することで、コンポーネント・ライターは、基礎となるデータ構造を公開しなくても、コンポーネントの状態にアクセスできます。
コンポーネントでのプロパティの使用には、様々な利点があります。
プロパティは、JDeveloperのJavaビジュアル・エディタを最大限に利用します。コンポーネント・ユーザーは、(プロパティ値の設定により)コンポーネントの状態を変更し、その変更の効果をプログラム上でただちに確認できます。デフォルトでは、コンポーネントのすべてのパブリック・プロパティを他のコンポーネントに使用できますが、オプションのBeanInfoクラスを使用して、公開するプロパティを指定することで、コンポーネント・プロパティへの設計時のアクセスを制御できます。
プロパティのアクセッサ・メソッドに複雑な機能を含めることができます。コンポーネント・ユーザーは、詳細を理解する必要はありません。setProperty()
メソッドまたはgetProperty()
メソッドをコールするだけです。単純な数値のように見えるプロパティは、実際には長い計算またはデータベースの参照を行います。コンポーネント・ユーザーは、その複雑さに対処する必要がありません。
プロパティを設定または読み取るときに、アクセッサ・メソッドを使用して、他のオブジェクトに通知したり、他のメソッドをコールできます。アクセッサ・メソッドは、コンポーネントのあらゆる種類の複雑な動作をカプセル化できます。コンポーネント・ユーザーは、メソッドをコールする方法を理解するだけで済みます。
プロパティでは、コンポーネントで定義されている適切な名前付きのアクセッサ・メソッドを使用することをお薦めします。コンポーネントのクラス・データ・メンバーと特定のコンポーネント・プロパティの間には、1対1の関係がないこともあるため、コンポーネントにクラス・データ・メンバー(またはフィールド)を関連付ける必要はありません。たとえば、次のコード・フラグメントはshadowColor
というコンポーネント・プロパティを定義します。
public class MyComponent extends Panel {
private int redValue;
private int greenValue;
private int blueValue;
public int getShadowColor() {
return redValue
greenValue
blueValue;
}
public void setShadowColor(int color) {
redValue = color & 0xff0000; // class data members
greenValue = color & 0x00FF00;
blueValue = color & 0x0000FF;
}
}
MyComponent
には、shadowColor
という名前の実際のクラス・データ・メンバーはありませんが、2つのアクセッサ・メソッドgetShadowColor()
およびsetShadowColor()
によりプロパティが正しく定義されています。これらのメソッドは、3つの変数の書込みおよび読取りを行い、プロパティの値を計算します。コンポーネント・プロパティでは、プロパティ自体と同じ名前を使用して変数を設定するのが一般的ですが、その必要はありません。プロパティ・アクセッサ・メソッドを正しく宣言するだけで、コンポーネント・プロパティが有効になります。
Copyright © 1997, 2007, Oracle. All rights reserved.