- java.lang.Object
-
- javax.swing.event.EventListenerList
-
- 实现的所有接口
-
Serializable
public class EventListenerList extends Object implements Serializable
包含EventListeners列表的类。 单个实例可用于使用列表保存实例的所有侦听器(所有类型)。 使用EventListenerList提供类型安全的API(最好符合JavaBeans规范)和将事件通知方法分派给列表中适当的事件监听器的方法是该类的责任。 这个类提供的主要好处是,在没有监听器的情况下它相对便宜,并且它在一个地方提供事件监听器列表的序列化,以及一定程度的MT安全性(正确使用时)。 用法示例:假设一个人正在定义一个发送FooEvents的类,并且想要允许该类的用户注册FooListeners并在FooEvents发生时接收通知。 应将以下内容添加到类定义中: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接口中的每个通知方法都应该存在一个fire方法。警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始,
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 protected Object[]
listenerList
ListenerType列表 - 监听器对
-
构造方法摘要
构造方法 构造器 描述 EventListenerList()
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 <T extends EventListener>
voidadd(类<T> t, T l)
将侦听器添加为指定类型的侦听器。int
getListenerCount()
返回此侦听器列表的侦听器总数。int
getListenerCount(类<?> t)
返回此侦听器列表提供的类型的侦听器总数。Object[]
getListenerList()
将事件侦听器列表作为ListenerType-listener对数组传回。<T extends EventListener>
T[]getListeners(类<T> t)
返回给定类型的所有侦听器的数组。<T extends EventListener>
voidremove(类<T> t, T l)
将侦听器作为指定类型的侦听器删除。String
toString()
返回EventListenerList的字符串表示形式。
-
-
-
字段详细信息
-
listenerList
protected transient volatile Object[] listenerList
ListenerType列表 - 监听器对
-
-
方法详细信息
-
getListenerList
public Object[] getListenerList()
将事件侦听器列表作为ListenerType-listener对数组传回。 请注意,出于性能原因,此实现会传回内部存储侦听器数据的实际数据结构! 保证此方法传回非空数组,因此在fire方法中不需要进行空值检查。 如果当前没有侦听器,则应返回零长度的Object数组。 警告!!! 绝对不应该修改这个数组中包含的数据 - 如果需要任何这样的操作,它应该在返回的数组的副本而不是数组本身上完成。- 结果
- ListenerType-listener对的数组
-
getListeners
public <T extends EventListener> T[] getListeners(类<T> t)
返回给定类型的所有侦听器的数组。- 参数类型
-
T
- 要搜索的EventListener
的类型 - 参数
-
t
- 要返回的EventListener
类的类型 - 结果
- 所有指定类型的侦听器。
- 异常
-
ClassCastException
- 如果提供的类不可分配给EventListener - 从以下版本开始:
- 1.3
-
getListenerCount
public int getListenerCount()
返回此侦听器列表的侦听器总数。- 结果
- 侦听器总数的整数计数
-
getListenerCount
public int getListenerCount(类<?> t)
返回此侦听器列表提供的类型的侦听器总数。- 参数
-
t
- 要计数的侦听器类型 - 结果
-
t
类型的侦听器t
-
add
public <T extends EventListener> void add(类<T> t, T l)
将侦听器添加为指定类型的侦听器。- 参数类型
-
T
- 要添加的EventListener
的类型 - 参数
-
t
- 要添加的EventListener
类的类型 -
l
- 要添加的侦听器
-
remove
public <T extends EventListener> void remove(类<T> t, T l)
将侦听器作为指定类型的侦听器删除。- 参数类型
-
T
- 种类EventListener
- 参数
-
t
- 要删除的侦听器的类型 -
l
- 要删除的侦听器
-
-