Spec-Zone.ru › OpenJDK 25

Класс PropertyChangeSupport

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

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

PropertyChangeSupport

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/beans/PropertyChangeSupport.html

Spec-Zone.ru

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