Spec-Zone.ru › OpenJDK 27

Класс EventListenerList

java.lang.Object
javax.swing.event.EventListenerList
Все реализованные интерфейсы:
Serializable
public class EventListenerList extends Object implements Serializable
Класс, содержащий список слушателей событий. Один экземпляр можно использовать для хранения всех слушателей (всех типов) экземпляра, использующего этот список. Класс, использующий 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 в пакет java.beans добавлена поддержка долговременного хранения всех JavaBeans. См. XMLEncoder.

Краткое описание полей

Модификатор и тип Поле Описание
protected Object[] listenerList
Список пар ListenerType — слушатель

Краткое описание конструкторов

Конструктор Описание
EventListenerList()
Создаёт EventListenerList.

Краткое описание методов

Модификатор и тип Метод Описание
<T extends EventListener>
void
add(Class<T> t, T l)
Добавляет слушателя в качестве слушателя указанного типа.
int getListenerCount()
Возвращает общее количество слушателей в этом списке.
int getListenerCount(Class<?> t)
Возвращает общее количество слушателей указанного типа в этом списке.
Object[] getListenerList()
Возвращает список слушателей событий в виде массива пар ListenerType — слушатель.
<T extends EventListener>
T[]
getListeners(Class<T> t)
Возвращает массив всех слушателей указанного типа.
<T extends EventListener>
void
remove(Class<T> t, T l)
Удаляет слушателя из числа слушателей указанного типа.
String toString()
Возвращает строковое представление EventListenerList.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Проверяет, «равен ли» этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.

Подробное описание полей

listenerList

protected transient volatile Object[] listenerList
Список пар ListenerType — слушатель

Подробное описание конструкторов

EventListenerList

public EventListenerList()
Создаёт EventListenerList.

Подробное описание методов

getListenerList

public Object[] getListenerList()
Возвращает список слушателей событий в виде массива пар ListenerType — слушатель. Обратите внимание, что из соображений производительности эта реализация возвращает непосредственно структуру данных, в которой внутри хранятся данные о слушателях! Метод гарантированно возвращает ненулевой массив, поэтому в методах fire проверка на null не требуется. Если слушателей нет, должен возвращаться пустой массив Object. ВНИМАНИЕ!!! Категорически запрещается изменять данные, содержащиеся в этом массиве. Если такие изменения необходимы, их следует выполнять над копией возвращённого массива, а не над самим массивом.
Возвращает:
массив пар ListenerType — слушатель

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
Возвращает:
строковое представление объекта

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API