Класс EventListenerList
- java.lang.Object
-
- javax.swing.event.EventListenerList
- Все реализованные интерфейсы:
Serializable
public class EventListenerList extends Object implements Serializable
Класс, содержащий список EventListeners. Единственный экземпляр может хранить всех слушателей (всех типов) для экземпляра, использующего этот список. Ответственность класса, использующего EventListenerList, заключается в обеспечении безопасного по типу API (предпочтительно соответствующего спецификации JavaBeans) и методов, которые отправляют уведомления о событиях соответствующим слушателям в списке. Основные преимущества этого класса заключаются в том, что он относительно дешёвый в случае отсутствия слушателей, и он обеспечивает сериализацию списков слушателей событий в одном месте, а также определённую безопасность в многопоточной среде (при правильном использовании). Пример использования: предположим, что вы определяете класс, который отправляет 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. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans™ была добавлена в пакет java.beans. См. XMLEncoder.
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Object[] |
listenerList |
Список пар ListenerType - Listener |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
EventListenerList() |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<T extends EventListener> |
add(Class<T> t,
T l) |
Добавляет слушателя как слушателя указанного типа. |
int |
getListenerCount() |
Возвращает общее количество слушателей для этого списка слушателей. |
int |
getListenerCount(Class<?> t) |
Возвращает общее количество слушателей указанного типа для этого списка слушателей. |
Object[] |
getListenerList() |
Возвращает список слушателей событий в виде массива пар ListenerType-listener. |
<T extends EventListener> |
getListeners(Class<T> t) |
Возвращает массив всех слушателей заданного типа. |
<T extends EventListener> |
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 volatile Object[] listenerList
Список пар ListenerType - Listener
Подробное описание конструкторов
EventListenerList
public EventListenerList()
Подробное описание методов
getListenerList
public Object[] getListenerList()
Возвращает список слушателей событий в виде массива пар ListenerType-listener. Обратите внимание, что по соображениям производительности данная реализация возвращает фактическую структуру данных, в которой хранятся данные слушателей внутри! Этот метод гарантированно возвращает массив не равный null, так что проверка на null не требуется в методах fire. Массив длиной 0 типа Object должен возвращаться, если в данный момент нет слушателей. ПРЕДУПРЕЖДЕНИЕ!!! Абсолютно никакие изменения в данных, содержащихся в этом массиве, не должны производиться — если такие манипуляции необходимы, следует выполнять их над копией возвращённого массива, а не над самим массивом.
- Возвращает:
- массив пар 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.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/event/EventListenerList.html