Visual Editor for Java の「設計」ビューまたは「Java Bean」ビューのコンポーネントにイベントを追加できます。
イベントを追加する場合、使用可能な既存リスナーがあれば、コールバック・メソッドが このリスナーに追加されます。そうでない場合は、新規リスナーが作成されます。既存リスナーを使用するには、そのリスナーが、リスナー・インターフェースを実装する JavaBean 上の無名内部クラスである必要があります。これはコールバック・メソッドに空のメソッド本文を持つか、アダプター・クラスを拡張し、追加されるイベント・コールバックの既存のメソッドを持たないようにする必要があります。プロパティーの場合、単一引数メソッド addPropertyChange(PropertyChangeListener リスナー) を使用して PropertyChangeListener が JavaBean に追加された場合は、 その既存 PropertyChangeListener が再使用されます。 まだ、コードがない場合は、プロパティーの処理が追加されます。
コールバック・メソッドの追加先になる既存リスナーの候補がない場合には、新しいリスナーが作成されます。作成されるリスナーは無名のインナー・クラスであり、アダプター・クラスがイベントに定義されている場合は、 リスナーによってこのクラスが拡張されます。それ以外の場合には、リスナーがリスナー・インターフェースを実装します。イベントが追加された後で、//TODO コメント付きでスタブ・メソッドが作成されます。スタブ・メソッドは、イベントが発生したときに実行されるソース・コードのインディケーターです。イベントが発生した場合には必要な動作を実行するように、このソース・コードを変更してください。 //TODO コメントは「タスク」ウィンドウに 表示され、不完全なメソッドにフラグを立てることができます。これにより、後で見つけて、コールバック・ロジックを書き込んでから、//TODO コメントを除去できます。
上記の例では、windowOpened メソッドはすでに存在しています。一方、これがアダプターを拡張するリスナーの場合は、リスナーがまだ windowClosed メソッドを持っていないため、同じリスナーが再使用されます。 windowClosed(WindowEvent e) メソッドが追加され、 メソッドのスタブと //TODO コメントも以下のように追加されます。
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent e) {
System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed()
}
public void windowOpened(java.awt.event.WindowEvent e) {
callExistingWindowOpenedLogic();
}
});
エキスパート・モードでは、上記のようにイベントを JavaBean に追加できますが、 そのイベントを Java Bean ツリーのリスナーにも追加できます。「イベント」メニューには、リスナーにあるすべてのイベント・コールバック・メソッドが表示され、すでに使用されたものは使用不可になっています。
PropertyChangeListener については、ポップアップ・メニューに JavaBean 上のすべてのバウンド・プロパティーが表示されます。 PropertyChangeListener によりすでに使用されているものは、使用不可になっています。
単一引数メソッドを追加されたリスナーには、以下のコードに示すようにそれぞれのプロパティー ・コールバックのロジックを処理する前に、プロパティー名を検査する if 文があります。
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent e) {
if ((e.getPropertyName().equals("font"))) {
System.out.println("propertyChange(font)");
}
}
});
これにより、(複数 if{} ブロックを使用できるようにして) 単一引数メソッドを付加した PropertyChangeListener を複数のプロパティーに使用できます。そして、2 番目およびそれに続くプロパティー・コールバックを追加するときは、新規 if{} ブロックが追加されます。
2 つの引数メソッド addPropertyChangeListener(String propertyName、PropertyChangeListener リスナー) を使用して propertyChangeListener を JavaBean に追加する場合、これは特定のプロパティーに固有になる ため、他のプロパティーでは再使用できません。 このケースでは、すべての「イベント」カスケード・メニューの子は使用不可になっています。