モジュール java.desktop
パッケージ 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を参照してください。

    関連項目:
    直列化された形式
    • フィールドの詳細

      • listenerList

        protected transient volatile Object[] listenerList
        ListenerType - Listenerペアのリスト
    • コンストラクタの詳細

      • EventListenerList

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