java.lang.Object
javax.swing.event.EventListenerList
- すべての実装されたインタフェース:
Serializable
public class EventListenerList extends Object implements Serializable
EventListenerのリストを格納するクラスです。 1つのインスタンスを使用して、このリストを使用しているインスタンスの(すべてのタイプの)すべてのリスナーを格納できます。 タイプ保証されたAPI (JavaBeans仕様への準拠が望ましい)およびイベント通知メソッドをリスト内の適切なEventListenerに送信するメソッドの提供は、EventListenerListを使用しているクラスが行います。 このクラスで得られる主な利点は、リスナーが存在しない場合に比較的安価であり、単一の場所におけるイベント・リスナー・リストのシリアル化、およびある程度のMT安全性(正常な使用時)が実現されることです。 使用例: たとえば、FooEventを送出するクラスを定義して、そのクラスのユーザーがFooListenerを登録し、FooEventが発生したら通知を受け取ることができるようにする場合は、 クラスの定義に次のコードを追加する必要があります。
EventListenerList listenerList = new EventListenerList(); FooEvent fooEvent = null; public void addFooListener(FooListener l) { listenerList.add(FooListener.class, l); } public void removeFooListener(FooListener l) { listenerList.remove(FooListener.class, l); } // Notify all listeners that have registered interest for // notification on this event type. The event instance // is lazily created using the parameters passed into // the fire method. protected void fireFooXXX() { // Guaranteed to return a non-null array Object[] listeners = listenerList.getListenerList(); // Process the listeners last to first, notifying // those that are interested in this event for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==FooListener.class) { // Lazily create the event: if (fooEvent == null) fooEvent = new FooEvent(this); ((FooListener)listeners[i+1]).fooXXX(fooEvent); } } }fooは適切な名前に、fireFooXxxは適切なメソッド名にそれぞれ変更する必要があります。 FooListenerインタフェースの通知メソッドごとに起動メソッドが必要です。
警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beans
パッケージに追加されています。 XMLEncoder
を参照してください。
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 protected Object[]
listenerList
ListenerType - Listenerペアのリスト -
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 EventListenerList()
-
メソッドのサマリー
修飾子と型 メソッド 説明 <T extends EventListener>
voidadd(Class<T> t, T l)
指定された型のリスナーとしてリスナーを追加します。int
getListenerCount()
このリスナー・リストのリスナーの総数を返します。int
getListenerCount(クラス<?> t)
このリスナー・リストの、指定された型のリスナーの総数を返します。Object[]
getListenerList()
イベント・リスナーのリストを、リスナーとリスナー・タイプのペアの配列として返します。<T extends EventListener>
T[]getListeners(クラス<T> t)
指定された型のすべてのリスナーの配列を返します。<T extends EventListener>
voidremove(Class<T> t, T l)
指定された型のリスナーとしてリスナーを削除します。String
toString()
EventListenerListの文字列表現を返します。
-
フィールド詳細
-
listenerList
protected transient volatile Object[] listenerListListenerType - Listenerペアのリスト
-
-
コンストラクタの詳細
-
EventListenerList
public EventListenerList()
-
-
メソッドの詳細
-
getListenerList
public Object[] getListenerList()イベント・リスナーのリストを、リスナーとリスナー・タイプのペアの配列として返します。 パフォーマンス向上のため、この実装はリスナー・データが内部に格納されている実際のデータ構造体を返します。 このメソッドは、null以外の配列を返すことが保証されているので、起動メソッドでのnullのチェックは必要ありません。 現在リスナーがない場合は、Objectの長さが0の配列が返されます。 WARNING!!! この配列に格納されているデータの変更を行わないでください。そのような操作が必要な場合は、配列そのものではなく、返された配列のコピーに対して行なってください。- 戻り値:
- ListenerType-listenerペアの配列
-
getListeners
public <T extends EventListener> T[] getListeners(Class<T> t)指定された型のすべてのリスナーの配列を返します。- 型パラメータ:
T
- 検索するEventListener
の型- パラメータ:
t
- 戻されるEventListener
クラスの型- 戻り値:
- 指定された型のすべてのリスナー。
- 例外:
ClassCastException
- 指定されたクラスがEventListenerに割り当てられない場合- 導入されたバージョン:
- 1.3
-
getListenerCount
public int getListenerCount()このリスナー・リストのリスナーの総数を返します。- 戻り値:
- リスナーの総数の整数カウント
-
getListenerCount
public int getListenerCount(クラス<?> t)このリスナー・リストの、指定された型のリスナーの総数を返します。- パラメータ:
t
- カウントするリスナーの型- 戻り値:
- 型
t
のリスナーの数
-
add
public <T extends EventListener> void add(Class<T> t, T l)指定された型のリスナーとしてリスナーを追加します。- 型パラメータ:
T
- 追加するEventListener
の型- パラメータ:
t
- 追加するEventListener
クラスの型l
- 追加されるリスナー
-
remove
public <T extends EventListener> void remove(Class<T> t, T l)指定された型のリスナーとしてリスナーを削除します。- 型パラメータ:
T
-EventListener
の型- パラメータ:
t
- 削除されるリスナーの型l
- 削除されるリスナー
-
toString
public String toString()EventListenerListの文字列表現を返します。
-