モジュール java.desktop
パッケージ javax.swing.event

クラスEventListenerList

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を参照してください。

  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected Object[]
    ListenerType - Listenerペアのリスト
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    EventListenerListを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    <T extends EventListener>
    void
    add(Class<T> t, T l)
    指定された型のリスナーとしてリスナーを追加します。
    int
    このリスナー・リストのリスナーの総数を返します。
    int
    このリスナー・リストの、指定された型のリスナーの総数を返します。
    イベント・リスナーのリストを、リスナーとリスナー・タイプのペアの配列として返します。
    <T extends EventListener>
    T[]
    指定された型のすべてのリスナーの配列を返します。
    <T extends EventListener>
    void
    remove(Class<T> t, T l)
    指定された型のリスナーとしてリスナーを削除します。
    EventListenerListの文字列表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • listenerList

      protected transient volatile Object[] listenerList
      ListenerType - 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の文字列表現を返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このオブジェクトの文字列表現