JavaTM 2 Platform
Std. Ed. v1.3

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 に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。

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

フィールドの概要
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)
指定されたタイプのすべてのリスナーの配列を返します。
戻り値:
指定されたタイプのすべてのリスナー
導入されたバージョン:
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
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトの文字列表現

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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