java.lang.Object
javax.swing.event.EventListenerList
- 所有已实现的接口:
-
Serializable
一个保存 EventListeners 列表的类。一个单一实例可以用于保存使用列表的实例的所有监听器(所有类型)。使用 EventListenerList 的类负责提供类型安全的 API(最好符合 JavaBeans 规范)和将事件通知方法分派到列表上适当的 Event Listeners 的方法。这个类提供的主要好处是,在没有监听器的情况下相对便宜,并且提供了事件监听器列表的序列化在一个地方,以及一定程度的 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); } // 通知所有已注册对此事件类型感兴趣的监听器。事件实例是使用传递给 fire 方法的参数延迟创建的。 protected void fireFooXXX() { // 保证返回一个非空数组 Object[] listeners = listenerList.getListenerList(); // 从后向前处理监听器,通知那些对此事件感兴趣的监听器 for (int i = listeners.length-2; i>=0; i-=2) { if (listeners[i]==FooListener.class) { // 延迟创建事件: if (fooEvent == null) fooEvent = new FooEvent(this); ((FooListener)listeners[i+1]).fooXXX(fooEvent); } } }foo 应该更改为适当的名称,fireFooXxx 应更改为适当的方法名称。每个通知方法应该存在一个 fire 方法,用于 FooListener 接口中的每个通知方法。
警告: 此类的序列化对象将不兼容未来的 Swing 版本。当前的序列化支持适用于短期存储或在运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 开始,已将所有 JavaBeans 的长期存储支持添加到 java.beans
包中。请参阅 XMLEncoder
。
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription<T extends EventListener>
void将监听器添加为指定类型的监听器。int
返回此监听器列表的所有监听器总数。int
getListenerCount
(Class<?> t) 返回此监听器列表中指定类型的监听器总数。Object[]
将事件监听器列表作为 ListenerType-监听器对的数组传回。<T extends EventListener>
T[]getListeners
(Class<T> t) 返回给定类型的所有监听器的数组。<T extends EventListener>
void将监听器从指定类型的监听器中移除。toString()
返回 EventListenerList 的字符串表示形式。
-
Field Details
-
listenerList
监听器类型 - 监听器对的列表
-
-
Constructor Details
-
EventListenerList
public EventListenerList()构造一个EventListenerList
。
-
-
Method Details
-
getListenerList
将事件监听器列表作为 ListenerType-监听器对的数组传回。请注意,出于性能原因,此实现将实际存储监听器数据的数据结构传回!此方法保证传回一个非空数组,因此在 fire 方法中不需要进行空值检查。如果当前没有监听器,则应返回一个长度为零的 Object 数组。警告!!! 绝对不应对此数组中包含的数据进行任何修改--如果需要进行任何此类操作,应在返回的数组的副本上而不是数组本身上进行操作。- 返回:
- ListenerType-监听器对的数组
-
getListeners
返回给定类型的所有监听器的数组。- 类型参数:
-
T
- 要搜索的EventListener
的类型 - 参数:
-
t
- 要返回的EventListener
类型 - 返回:
- 指定类型的所有监听器。
- 抛出:
-
ClassCastException
- 如果提供的类无法分配给 EventListener - 自:
- 1.3
-
getListenerCount
public int getListenerCount()返回此监听器列表的所有监听器总数。- 返回:
- 所有监听器的整数计数
-
getListenerCount
返回此监听器列表中指定类型的所有监听器总数。- 参数:
-
t
- 要计数的监听器类型 - 返回:
-
类型为
t
的监听器数量
-
add
将监听器添加为指定类型的监听器。- 类型参数:
-
T
- 要添加的EventListener
的类型 - 参数:
-
t
- 要添加的EventListener
类型 -
l
- 要添加的监听器
-
remove
将监听器从指定类型的监听器中移除。- 类型参数:
-
T
-EventListener
的类型 - 参数:
-
t
- 要移除的监听器类型 -
l
- 要移除的监听器
-
toString
返回 EventListenerList 的字符串表示形式。
-