Java プラットフォーム 1.2

javax.swing.event
クラス EventListenerList

java.lang.Object
  |
  +--javax.swing.event.EventListenerList

public class EventListenerList
extends Object
implements Serializable

EventListener のリストを格納するクラスです。1 つのインスタンスを使って、このリストを使用しているインスタンスの (すべての型の) すべてのリスナーを格納できます。型保証された API (JavaBeans 仕様の準拠が望ましい) およびイベント通知メソッドをリスト内の適切な EventListener に送信するメソッドの提供は、EventListenerList を使用しているクラスが担当します。

このクラスが提供する主な利点は、リスナーがない場合には比較的手間がかからず、イベントリスナーのリストを 1 つの場所で直列化して、正しく使用した場合にはある程度のマルチスレッドに対する安全が提供されることです。

使用例: たとえば、FooEvent を送出するクラスを定義して、そのクラスのユーザが FooListener を登録し、FooEvent が発生したら通知を受け取ることができるようにする場合は、クラスの定義に次のコードを追加する必要があります。

EventListenerList listenrList = new EventListnerList();
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 は適切な名前に、Method は適切なメソッド名にそれぞれ変更する必要があります。FooListener インタフェースの通知メソッドごとに起動メソッドが必要です。

警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。

関連項目:
直列化された形式

フィールドの概要
protected  Object[] listenerList
           
 
コンストラクタの概要
EventListenerList()
           
 
メソッドの概要
 void add(Class t, EventListener l)
          指定された型のリスナーとしてリスナーを追加します。
 int getListenerCount()
          このリスナーリストのリスナーの総数を返します。
 int getListenerCount(Class t)
          このリスナーリストの、指定された型のリスナーの総数を返します。
 Object[] getListenerList()
          イベントリスナーのリストを、リスナーとリスナーの型のペアの配列として返します。
 void remove(Class t, EventListener l)
          指定された型のリスナーとしてリスナーを削除します。
 String toString()
          EventListenerList の文字列表現を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

listenerList

protected transient Object[] listenerList
コンストラクタの詳細

EventListenerList

public EventListenerList()
メソッドの詳細

getListenerList

public Object[] getListenerList()
イベントリスナーのリストを、リスナーとリスナーの型のペアの配列として返します。パフォーマンス向上のため、この実装はリスナーデータが内部に格納されている実際のデータ構造体を返します。このメソッドは、null ではない配列を返すことが保証されるので、起動メソッドでの null のチェックは必要ありません。現在リスナーがない場合は、Object の長さが 0 の配列が返されます。

警告: この配列に格納されているデータの変更を行なってはいけません。そのような操作が必要な場合は、配列そのものではなく、返された配列のコピーに対して行なってください。


getListenerCount

public int getListenerCount()
このリスナーリストのリスナーの総数を返します。

getListenerCount

public int getListenerCount(Class t)
このリスナーリストの、指定された型のリスナーの総数を返します。

add

public void add(Class t,
                EventListener l)
指定された型のリスナーとしてリスナーを追加します。
パラメータ:
t - 追加されるリスナーの型
l - 追加されるリスナー

remove

public void remove(Class t,
                   EventListener l)
指定された型のリスナーとしてリスナーを削除します。
パラメータ:
t - 削除されるリスナーの型
l - 削除されるリスナー

toString

public String toString()
EventListenerList の文字列表現を返します。
オーバーライド:
クラス Object 内の toString

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.