モジュール java.desktop
パッケージ 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を使用しているクラスが行います。 このクラスで得られる主な利点は、リスナーが存在しない場合に比較的安価であり、単一の場所におけるイベント・リスナー・リストのシリアル化、およびある程度の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
      戻り値:
      このオブジェクトの文字列表現