JavaTM Platform
Standard Ed. 6

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 Version 1.4 以降、すべての JavaBeans の長期間の運用サポートは、java.beans パッケージに追加されています。詳細は、XMLEncoder を参照してください。


フィールドの概要
protected  Object[] listenerList
           
 
コンストラクタの概要
EventListenerList()
           
 
メソッドの概要
<T extends EventListener>
void
add(Class<T> t, T l)
          指定された型のリスナーとしてリスナーを追加します。
 int getListenerCount()
          このリスナーリストのリスナーの総数を返します。
 int getListenerCount(Class<?> t)
          このリスナーリストの、指定された型のリスナーの総数を返します。
 Object[] getListenerList()
          イベントリスナーのリストを、リスナーとリスナータイプのペアの配列として返します。
<T extends EventListener>
T[]
getListeners(Class<T> t)
          指定された型のすべてのリスナーの配列を返します。
<T extends EventListener>
void
remove(Class<T> t, T 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 <T extends EventListener> T[] getListeners(Class<T> t)
指定された型のすべてのリスナーの配列を返します。

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

getListenerCount

public int getListenerCount()
このリスナーリストのリスナーの総数を返します。


getListenerCount

public int getListenerCount(Class<?> t)
このリスナーリストの、指定された型のリスナーの総数を返します。


add

public <T extends EventListener> void add(Class<T> t,
                                          T l)
指定された型のリスナーとしてリスナーを追加します。

パラメータ:
t - 追加されるリスナーの型
l - 追加されるリスナー

remove

public <T extends EventListener> void remove(Class<T> t,
                                             T l)
指定された型のリスナーとしてリスナーを削除します。

パラメータ:
t - 削除されるリスナーの型
l - 削除されるリスナー

toString

public String toString()
EventListenerList の文字列表現を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
このオブジェクトの文字列表現

JavaTM Platform
Standard Ed. 6

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

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。