java.lang.Object
javax.swing.event.EventListenerList
- すべての実装されたインタフェース:
Serializable
public class EventListenerList extends Object implements Serializable
EventListenerのリストを格納するクラスです。 1つのインスタンスを使用して、このリストを使用しているインスタンスの(すべてのタイプの)すべてのリスナーを格納できます。 EventListenerListを使用して、タイプ・セーフAPI (JavaBeans仕様に準拠することが望ましい)と、リスト上の適切なイベント・リスナーにイベント通知メソッドをディスパッチするメソッドを提供するのは、クラスの役割です。 このクラスで得られる主な利点は、リスナーが存在しない場合に比較的安価であり、単一の場所におけるイベント・リスナー・リストのシリアル化、およびある程度の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を参照してください。
-
フィールドのサマリー
フィールド -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明<T extends EventListener>
void指定された型のリスナーとしてリスナーを追加します。intこのリスナー・リストのリスナーの総数を返します。intgetListenerCount(Class<?> t) このリスナー・リストの、指定された型のリスナーの総数を返します。Object[]イベント・リスナーのリストを、リスナーとリスナー・タイプのペアの配列として返します。<T extends EventListener>
T[]getListeners(Class<T> t) 指定された型のすべてのリスナーの配列を返します。<T extends EventListener>
void指定された型のリスナーとしてリスナーを削除します。toString()EventListenerListの文字列表現を返します。
-
フィールド詳細
-
listenerList
protected transient volatile Object[] listenerListListenerType - Listenerペアのリスト
-
-
コンストラクタの詳細
-
EventListenerList
public EventListenerList()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(Class<?> 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の文字列表現を返します。
-