Класс 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) | Создаёт объект |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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) | Сообщает о событии обновления индексированного связанного свойства типа integer слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем. |
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) | Сообщает о событии обновления связанного свойства типа integer слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем. |
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 для определённого свойства. |
Методы, объявленные в классе java.lang.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)
Добавляет обработчик событий изменения свойства в список слушателей. Слушатель регистрируется для всех свойств. Один и тот же объект слушателя может быть добавлен несколько раз, и он будет вызываться столько раз, сколько раз он был добавлен. Если listener равно null, исключение не выбрасывается, и никаких действий не выполняется.
- Параметры:
-
listener- Добавляемый обработчик событий изменения свойства
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
Удаляет обработчик событий изменения свойства из списка слушателей. Это удаляет обработчик событий изменения свойства, который был зарегистрирован для всех свойств. Если listener был добавлен более одного раза к одному и тому же источнику событий, он будет уведомлён на одну попытку меньше после удаления. Если listener равно null или никогда не добавлялся, исключение не выбрасывается, и никаких действий не выполняется.
- Параметры:
-
listener- Удаляемый обработчик событий изменения свойства
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners()
Возвращает массив всех слушателей, которые были добавлены к объекту PropertyChangeSupport с помощью addPropertyChangeListener().
Если некоторые слушатели были добавлены со свойством с именем, возвращаемый массив будет содержать смесь PropertyChangeListeners и 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) Добавляет обработчик событий изменения свойства для определенного свойства. Слушатель будет вызываться только тогда, когда вызов firePropertyChange называет это конкретное свойство. Один и тот же объект слушателя может быть добавлен несколько раз. Для каждого свойства слушатель будет вызываться количество раз, равное количеству раз, которое он был добавлен для этого свойства. Если propertyName или listener равно null, исключение не выбрасывается, и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым нужно следить. -
listener- Добавляемый обработчик событий изменения свойства - С:
- 1.2
removePropertyChangeListener
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) Удаляет обработчик событий изменения свойства для определенного свойства. Если listener был добавлен более одного раза к одному и тому же источнику событий для указанного свойства, он будет уведомлён на одну попытку меньше после удаления. Если propertyName равно null, исключение не выбрасывается, и никаких действий не выполняется. Если listener равно null или никогда не добавлялся для указанного свойства, исключение не выбрасывается, и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым следили. -
listener- Удаляемый обработчик событий изменения свойства - С:
- 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) Сообщает слушателям об обновлении целочисленного связанного свойства, которые были зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная оболочка вокруг более общего метода firePropertyChange(String, Object, Object).
- Параметры:
-
propertyName- Программное имя изменённого свойства -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - С:
- 1.2
firePropertyChange
public void firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue) Сообщает слушателям об обновлении булевого связанного свойства, которые были зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная оболочка вокруг более общего метода 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) Сообщает слушателям об обновлении целочисленного связанного индексированного свойства, которые были зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная оболочка вокруг более общего метода fireIndexedPropertyChange(String, int, Object, Object).
- Параметры:
-
propertyName- Программное имя изменённого свойства -
index- Индекс элемента свойства, который был изменён -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - С:
- 1.5
fireIndexedPropertyChange
public void fireIndexedPropertyChange(String propertyName,
int index,
boolean oldValue,
boolean newValue) Сообщает слушателям об обновлении булевого связанного индексированного свойства, которые были зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная оболочка вокруг более общего метода fireIndexedPropertyChange(String, int, Object, Object).
- Параметры:
-
propertyName- Программное имя изменённого свойства -
index- Индекс элемента свойства, который был изменён -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - С:
- 1.5
hasListeners
public boolean hasListeners(String propertyName)
Проверяет, есть ли слушатели для определённого свойства, включая тех, которые зарегистрированы для всех свойств. Если propertyName равно null, проверяются только слушатели, зарегистрированные для всех свойств.
- Параметры:
-
propertyName- Имя свойства. - Возвращает:
- true, если для данного свойства есть один или несколько слушателей
- С:
- 1.2
© 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/java/beans/PropertyChangeSupport.html