Spec-Zone.ru › OpenJDK 8

Класс EventListenerList

  • java.lang.Object
    • javax.swing.event.EventListenerList
Все реализованные интерфейсы:
Serializable

public class EventListenerList
extends Object
implements Serializable

Класс, содержащий список EventListeners. Единственный экземпляр может быть использован для хранения всех слушателей (всех типов) для экземпляра, использующего список. Класс, использующий EventListenerList, отвечает за предоставление безопасного по типу API (предпочтительно соответствующего спецификации JavaBeans) и методов, которые отправляют уведомления о событиях соответствующим Event Listeners в списке. Основные преимущества этого класса заключаются в его относительно низкой стоимости в случае отсутствия слушателей, а также в обеспечении сериализации списков слушателей событий в одном месте, а также в некоторой безопасности при одновременном доступе (при правильном использовании). Пример использования: предположим, что вы определяете класс, который отправляет 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 на соответствующее имя метода. Должен быть один метод fire для каждого метода уведомления в интерфейсе FooListener.

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 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 в методах fire не требуется. В случае отсутствия слушателей должен быть возвращен массив Object нулевой длины. ПРЕДУПРЕЖДЕНИЕ!!! Абсолютно никакие изменения в данных, содержащихся в этом массиве, делать НЕ следует — если такие манипуляции необходимы, они должны выполняться над копией возвращенного массива, а не над самим массивом.

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.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта.

© 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.

Spec-Zone.ru

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