JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing.event
クラス EventListenerList

java.lang.Object
  |
  +--javax.swing.event.EventListenerList
すべての実装インタフェース:
Serializable

public class EventListenerList
extends Object
implements Serializable

EventListener のリストを格納するクラスです。1 つのインスタンスを使って、このリストを使用しているインスタンスの (すべてのタイプの) すべてのリスナーを格納できます。タイプ保証された API (JavaBeans 仕様への準拠が望ましい) およびイベント通知メソッドをリスト内の適切な EventListener に送信するメソッドの提供は、EventListenerList を使用しているクラスが行います。 このクラスが提供する主な利点は、リスナーがない場合には比較的安上がりで、イベントリスナーのリストを 1 つの場所で直列化して、正しく使用した場合には、マルチスレッドに対するある程度の安全性が提供されることです。使用例としては、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 に適しています。JDK バージョン 1.4 以降、すべての JavaBeans の長期記憶用サポートは、java.beans パッケージに追加されています。詳細は、XMLEncoder を参照してください。


フィールドの概要
protected  Object[] listenerList
           
 
コンストラクタの概要
EventListenerList()
           
 
メソッドの概要
 void add(Class t, EventListener l)
          指定されたタイプのリスナーとしてリスナーを追加します。
 int getListenerCount()
          このリスナーリストのリスナーの総数を返します。
 int getListenerCount(Class t)
          このリスナーリストの、指定されたタイプのリスナーの総数を返します。
 Object[] getListenerList()
          イベントリスナーのリストを、リスナーとリスナータイプのペアの配列として返します。
 EventListener[] getListeners(Class t)
          指定されたタイプのすべてのリスナーの配列を返します。
 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 の配列が返されます。 警告: この配列に格納されているデータの変更を行なわないでください。そのような操作が必要な場合は、配列そのものではなく、返された配列のコピーに対して行なってください。


getListeners

public EventListener[] getListeners(Class t)
指定されたタイプのすべてのリスナーの配列を返します。

戻り値:
指定されたタイプのすべてのリスナー
例外:
ClassCastException - 指定されたクラスが EventListener に割り当てられない場合
導入されたバージョン:
1.3

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
戻り値:
このオブジェクトの文字列表現

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.