Spec-Zone.ru › OpenJDK 27

Класс PropertyChangeSupport

java.lang.Object
java.beans.PropertyChangeSupport
Все реализуемые интерфейсы:
Serializable
Прямые известные подклассы:
SwingPropertyChangeSupport
public class PropertyChangeSupport extends Object implements Serializable
Это вспомогательный класс, который можно использовать в компонентах bean, поддерживающих свойства с привязкой. Он управляет списком прослушивателей и рассылает им события PropertyChangeEvent. Экземпляр этого класса можно использовать как поле-член bean-компонента и делегировать ему выполнение такой работы. PropertyChangeListener можно зарегистрировать для всех свойств или для свойства, заданного по имени.

Ниже приведён пример использования PropertyChangeSupport, соответствующий правилам и рекомендациям спецификации JavaBeans:

public class MyBean {
    private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.removePropertyChangeListener(listener);
    }

    private String value;

    public String getValue() {
        return this.value;
    }

    public void setValue(String newValue) {
        String oldValue = this.value;
        this.value = newValue;
        this.pcs.firePropertyChange("value", oldValue, newValue);
    }

    [...]
}

Экземпляр PropertyChangeSupport является потокобезопасным.

Этот класс сериализуем. При сериализации он сохраняет (а при десериализации восстанавливает) прослушиватели, которые сами являются сериализуемыми. Несериализуемые прослушиватели при сериализации пропускаются.

Начиная с:
1.1
См. также:
  • VetoableChangeSupport
  • Форма сериализации

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

Конструктор Описание
PropertyChangeSupport(Object sourceBean)
Создаёт объект PropertyChangeSupport.

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

Модификатор и тип Метод Описание
void addPropertyChangeListener(PropertyChangeListener listener)
Добавляет PropertyChangeListener в список прослушивателей.
void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Добавляет PropertyChangeListener для определённого свойства.
void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой типа boolean.
void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой типа int.
void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой.
void firePropertyChange(PropertyChangeEvent event)
Отправляет событие изменения свойства прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем.
void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой типа boolean.
void firePropertyChange(String propertyName, int oldValue, int newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой типа int.
void firePropertyChange(String propertyName, Object oldValue, Object newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой.
PropertyChangeListener[] getPropertyChangeListeners()
Возвращает массив всех прослушивателей, добавленных в объект PropertyChangeSupport с помощью addPropertyChangeListener().
PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
Возвращает массив всех прослушивателей, связанных с именованным свойством.
boolean hasListeners(String propertyName)
Проверяет, есть ли прослушиватели определённого свойства, включая прослушивателей, зарегистрированных для всех свойств.
void removePropertyChangeListener(PropertyChangeListener listener)
Удаляет PropertyChangeListener из списка прослушивателей.
void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Удаляет PropertyChangeListener для определённого свойства.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

PropertyChangeSupport

public PropertyChangeSupport(Object sourceBean)
Создаёт объект PropertyChangeSupport.
Параметры:
sourceBean — bean-компонент, который будет указан в качестве источника всех событий.

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

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Добавляет PropertyChangeListener в список прослушивателей. Прослушиватель регистрируется для всех свойств. Один и тот же объект прослушивателя можно добавить несколько раз; он будет вызываться столько раз, сколько был добавлен. Если listener равен null, исключение не выбрасывается и никаких действий не выполняется.
Параметры:
listener — добавляемый PropertyChangeListener

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Удаляет PropertyChangeListener из списка прослушивателей. Удаляется PropertyChangeListener, зарегистрированный для всех свойств. Если listener был добавлен к одному и тому же источнику событий несколько раз, после удаления он будет получать уведомления на один раз реже. Если listener равен null или никогда не добавлялся, исключение не выбрасывается и никаких действий не выполняется.
Параметры:
listener — удаляемый PropertyChangeListener

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
Возвращает массив всех прослушивателей, добавленных в объект PropertyChangeSupport с помощью addPropertyChangeListener().

Если некоторые прослушиватели добавлены для именованного свойства, возвращаемый массив будет содержать как PropertyChangeListener, так и PropertyChangeListenerProxy. Если вызывающему методу требуется различать прослушивателей, ему необходимо проверить каждый элемент на то, является ли он PropertyChangeListenerProxy, выполнить приведение типа и изучить параметр.

PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
for (int i = 0; i < listeners.length; i++) {
  if (listeners[i] instanceof PropertyChangeListenerProxy) {
    PropertyChangeListenerProxy proxy =
                   (PropertyChangeListenerProxy)listeners[i];
    if (proxy.getPropertyName().equals("foo")) {
      // proxy is a PropertyChangeListener which was associated
      // with the property named "foo"
    }
  }
}
Возвращает:
все добавленные PropertyChangeListeners или пустой массив, если прослушиватели не добавлялись
Начиная с:
1.4
См. также:
  • PropertyChangeListenerProxy

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Добавляет PropertyChangeListener для определённого свойства. Прослушиватель будет вызываться только при вызове firePropertyChange для этого конкретного свойства. Один и тот же объект прослушивателя можно добавить несколько раз. Для каждого свойства прослушиватель будет вызываться столько раз, сколько он был добавлен для этого свойства. Если propertyName или listener равен null, исключение не выбрасывается и никаких действий не выполняется.
Параметры:
propertyName — имя прослушиваемого свойства.
listener — добавляемый PropertyChangeListener
Начиная с:
1.2

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Удаляет PropertyChangeListener для определённого свойства. Если listener был добавлен для указанного свойства к одному и тому же источнику событий несколько раз, после удаления он будет получать уведомления на один раз реже. Если propertyName равен null, исключение не выбрасывается и никаких действий не выполняется. Если listener равен null или никогда не добавлялся для указанного свойства, исключение не выбрасывается и никаких действий не выполняется.
Параметры:
propertyName — имя прослушиваемого свойства.
listener — удаляемый PropertyChangeListener
Начиная с:
1.2

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
Возвращает массив всех прослушивателей, связанных с именованным свойством.
Параметры:
propertyName — имя прослушиваемого свойства
Возвращает:
все PropertyChangeListeners, связанные с именованным свойством. Если такие прослушиватели не добавлялись или propertyName равен null, возвращается пустой массив.
Начиная с:
1.4

firePropertyChange

public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой.

Событие не отправляется, если старое и новое значения равны и не равны null.

Это всего лишь удобная обёртка над более универсальным методом firePropertyChange(PropertyChangeEvent).

Параметры:
propertyName — программное имя изменённого свойства
oldValue — старое значение свойства
newValue — новое значение свойства

firePropertyChange

public void firePropertyChange(String propertyName, int oldValue, int newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой типа int.

Событие не отправляется, если старое и новое значения равны.

Это всего лишь удобная обёртка над более универсальным методом firePropertyChange(String, Object, Object).

Параметры:
propertyName — программное имя изменённого свойства
oldValue — старое значение свойства
newValue — новое значение свойства
Начиная с:
1.2

firePropertyChange

public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с привязкой типа boolean.

Событие не отправляется, если старое и новое значения равны.

Это всего лишь удобная обёртка над более универсальным методом firePropertyChange(String, Object, Object).

Параметры:
propertyName — программное имя изменённого свойства
oldValue — старое значение свойства
newValue — новое значение свойства
Начиная с:
1.2

firePropertyChange

public void firePropertyChange(PropertyChangeEvent event)
Отправляет событие изменения свойства прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем.

Событие не отправляется, если старое и новое значения заданного события равны и не равны null.

Параметры:
event — отправляемое PropertyChangeEvent
Начиная с:
1.2

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой.

Событие не отправляется, если старое и новое значения равны и не равны null.

Это всего лишь удобная обёртка над более универсальным методом firePropertyChange(PropertyChangeEvent).

Параметры:
propertyName — программное имя изменённого свойства
index — индекс изменённого элемента свойства
oldValue — старое значение свойства
newValue — новое значение свойства
Начиная с:
1.5

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой типа int.

Событие не отправляется, если старое и новое значения равны.

Это всего лишь удобная обёртка над более универсальным методом fireIndexedPropertyChange(String, int, Object, Object).

Параметры:
propertyName — программное имя изменённого свойства
index — индекс изменённого элемента свойства
oldValue — старое значение свойства
newValue — новое значение свойства
Начиная с:
1.5

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
Сообщает прослушивателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении индексированного свойства с привязкой типа boolean.

Событие не отправляется, если старое и новое значения равны.

Это всего лишь удобная обёртка над более универсальным методом fireIndexedPropertyChange(String, int, Object, Object).

Параметры:
propertyName — программное имя изменённого свойства
index — индекс изменённого элемента свойства
oldValue — старое значение свойства
newValue — новое значение свойства
Начиная с:
1.5

hasListeners

public boolean hasListeners(String propertyName)
Проверяет, есть ли прослушиватели определённого свойства, включая прослушивателей, зарегистрированных для всех свойств. Если propertyName равен null, проверяются только прослушиватели, зарегистрированные для всех свойств.
Параметры:
propertyName — имя свойства.
Возвращает:
true, если для указанного свойства есть один или несколько прослушивателей
Начиная с:
1.2

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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