Класс 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 потокобезопасен.
Этот класс сериализуем. При сериализации он сохранит (и восстановит) всех слушателей, которые сами являются сериализуемыми. Любые несериализуемые слушатели будут пропущены во время сериализации.
- См. также:
-
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)
Добавляет обработчик PropertyChangeListener в список слушателей. Обработчик регистрируется для всех свойств. Один и тот же объект слушателя можно добавить несколько раз, и он будет вызываться столько раз, сколько раз он был добавлен. Если listener равно null, исключение не генерируется и никаких действий не выполняется.
- Параметры:
-
listener- Добавляемый обработчик PropertyChangeListener
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
Удаляет обработчик PropertyChangeListener из списка слушателей. Удаляется обработчик PropertyChangeListener, зарегистрированный для всех свойств. Если listener был добавлен более одного раза к тому же источнику событий, он будет оповещён на один вызов меньше после удаления. Если listener равно null или никогда не добавлялся, исключение не генерируется и никаких действий не выполняется.
- Параметры:
-
listener- Удаляемый обработчик PropertyChangeListener
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) Добавляет обработчик PropertyChangeListener для конкретного свойства. Обработчик будет вызываться только при вызове firePropertyChange, где указано это конкретное свойство. Один и тот же объект слушателя можно добавить более одного раза. Для каждого свойства слушатель будет вызываться количество раз, равное количеству его добавлений для этого свойства. Если propertyName или listener равны null, исключение не генерируется и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым нужно наблюдать. -
listener- Добавляемый обработчик PropertyChangeListener
removePropertyChangeListener
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) Удаляет обработчик PropertyChangeListener для конкретного свойства. Если listener был добавлен более одного раза к тому же источнику событий для указанного свойства, он будет оповещён на один вызов меньше после удаления. Если propertyName равно null, исключение не генерируется и никаких действий не выполняется. Если listener равно null или никогда не был добавлен для указанного свойства, исключение не генерируется и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым наблюдали. -
listener- Удаляемый обработчик PropertyChangeListener
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- Новое значение свойства
firePropertyChange
public void firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue) Сообщает слушателям об обновлении булевого связанного свойства, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная обертка вокруг более общего метода firePropertyChange(String, Object, Object).
- Параметры:
-
propertyName- Программное имя изменённого свойства -
oldValue- Старое значение свойства -
newValue- Новое значение свойства
firePropertyChange
public void firePropertyChange(PropertyChangeEvent event)
Отправляет событие изменения свойства слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем.
Событие не генерируется, если старое и новое значения события равны и не равны null.
- Параметры:
-
event- СобытиеPropertyChangeEvent, которое нужно отправить
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, если есть один или более слушателей для данного свойства
© 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.