「設計」ビューまたは「Java Bean」ビューのコンポーネントに 1 つのイベントを追加できます。
2 つの引き数メソッドを使用して追加されるリスナーは、 特定のプロパティーに特有であるため、他のプロパティーには再使用できません。 単一引き数メソッドを使用して追加されたリスナーには、以下のコードに示すように、 それぞれのプロパティー・コールバックのロジックを処理する前にプロパティー名を検査する 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 を、複数のプロパティーに使用することができます。
イベントを追加する場合、使用可能な既存リスナーがあれば、コールバック・メソッドが このリスナーに追加されます。 使用可能な既存リスナーがない場合は、新規リスナーが作成されます。 既存リスナーを使用するには、そのリスナーが、リスナー・インターフェースを実装する JavaBean 上の無名内部クラスでなければなりません。 これはコールバック・メソッドに空のメソッド本文を持つか、 またはアダプター・クラスを拡張する必要があります。 また、追加されるイベント・ コールバックの既存のメソッドを持ちません。プロパティーについては、単一引き数メソッド addPropertyChange(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 に追加する場合、これは特定のプロパティーに固有になる ため、他のプロパティーでは再使用できません。 このケースでは、すべての「イベント」カスケード・メニューの子は使用不可になっています。
親トピック: Visual Editor を使用したイベントの処理
関連概念
「Java Bean」ビュー