Класс VetoableChangeSupport
- java.lang.Object
-
- java.beans.VetoableChangeSupport
- Все реализованные интерфейсы:
Serializable
public class VetoableChangeSupport extends Object implements Serializable
Это утилитарный класс, который может быть использован компонентами, поддерживающими ограниченные свойства. Он управляет списком слушателей и рассылает PropertyChangeEvent события им. Вы можете использовать экземпляр этого класса в качестве поля вашего компонента и делегировать ему эти задачи. VetoableChangeListener могут быть зарегистрированы для всех свойств или для свойства, указанного по имени.
Вот пример VetoableChangeSupport использования, который соответствует правилам и рекомендациям, изложенным в спецификации JavaBeans™:
public class MyBean {
private final VetoableChangeSupport vcs = new VetoableChangeSupport(this);
public void addVetoableChangeListener(VetoableChangeListener listener) {
this.vcs.addVetoableChangeListener(listener);
}
public void removeVetoableChangeListener(VetoableChangeListener listener) {
this.vcs.removeVetoableChangeListener(listener);
}
private String value;
public String getValue() {
return this.value;
}
public void setValue(String newValue) throws PropertyVetoException {
String oldValue = this.value;
this.vcs.fireVetoableChange("value", oldValue, newValue);
this.value = newValue;
}
[...]
} Экземпляр VetoableChangeSupport потокобезопасен.
Этот класс сериализуем. При сериализации он сохранит (и восстановит) любых слушателей, которые сами являются сериализуемыми. Любые несериализуемые слушатели будут пропущены во время сериализации.
- С тех пор:
- 1.1
- См. также:
-
PropertyChangeSupport, Сериализованная форма
Конструкторы
| Конструктор | Описание |
|---|---|
VetoableChangeSupport(Object sourceBean) | Создаёт объект |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | addVetoableChangeListener(VetoableChangeListener listener) | Добавить VetoableChangeListener в список слушателей. |
void | addVetoableChangeListener(String propertyName,
VetoableChangeListener listener) | Добавить VetoableChangeListener для определённого свойства. |
void | fireVetoableChange(PropertyChangeEvent event) | Отправляет событие изменения свойства слушателям, которые были зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем. |
void | fireVetoableChange(String propertyName,
boolean oldValue,
boolean newValue) | Сообщает слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с логическим ограничением. |
void | fireVetoableChange(String propertyName,
int oldValue,
int newValue) | Сообщает слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении свойства с целочисленным ограничением. |
void | fireVetoableChange(String propertyName,
Object oldValue,
Object newValue) | Сообщает слушателям, зарегистрированным для отслеживания обновлений всех свойств или свойства с указанным именем, об обновлении ограниченного свойства. |
VetoableChangeListener[] | getVetoableChangeListeners() | Возвращает массив всех слушателей, которые были добавлены в объект VetoableChangeSupport с помощью addVetoableChangeListener(). |
VetoableChangeListener[] | getVetoableChangeListeners(String propertyName) | Возвращает массив всех слушателей, которые были связаны с указанным свойством. |
boolean | hasListeners(String propertyName) | Проверяет, есть ли какие-либо слушатели для определенного свойства, включая тех, которые зарегистрированы для всех свойств. |
void | removeVetoableChangeListener(VetoableChangeListener listener) | Удалить VetoableChangeListener из списка слушателей. |
void | removeVetoableChangeListener(String propertyName,
VetoableChangeListener listener) | Удалить VetoableChangeListener для определённого свойства. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
VetoableChangeSupport
public VetoableChangeSupport(Object sourceBean)
Создаёт объект VetoableChangeSupport.
- Параметры:
-
sourceBean- Компонент, используемый в качестве источника событий.
Методы
addVetoableChangeListener
public void addVetoableChangeListener(VetoableChangeListener listener)
Добавляет обработчик VetoableChangeListener в список слушателей. Обработчик регистрируется для всех свойств. Один и тот же объект слушателя можно добавлять несколько раз, и он будет вызываться столько раз, сколько раз был добавлен. Если listener имеет значение null, исключение не генерируется, и никаких действий не выполняется.
- Параметры:
-
listener- Добавляемый обработчик VetoableChangeListener
removeVetoableChangeListener
public void removeVetoableChangeListener(VetoableChangeListener listener)
Удаляет обработчик VetoableChangeListener из списка слушателей. Это удаляет обработчик VetoableChangeListener, зарегистрированный для всех свойств. Если listener был добавлен более одного раза в тот же источник событий, он будет уведомлен на одну попытку меньше после удаления. Если listener имеет значение null или никогда не добавлялся, исключение не генерируется, и никаких действий не выполняется.
- Параметры:
-
listener- Удаляемый обработчик VetoableChangeListener
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners()
Возвращает массив всех слушателей, которые были добавлены в объект VetoableChangeSupport с помощью addVetoableChangeListener().
Если некоторые слушатели были добавлены со свойством с именем, возвращаемый массив будет содержать смесь VetoableChangeListeners и VetoableChangeListenerProxy. Если вызывающий метод заинтересован в различении слушателей, то он должен проверить каждый элемент, чтобы определить, является ли он VetoableChangeListenerProxy, выполнить приведение типа и изучить параметр.
VetoableChangeListener[] listeners = bean.getVetoableChangeListeners();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] instanceof VetoableChangeListenerProxy) {
VetoableChangeListenerProxy proxy =
(VetoableChangeListenerProxy)listeners[i];
if (proxy.getPropertyName().equals("foo")) {
// proxy is a VetoableChangeListener which was associated
// with the property named "foo"
}
}
}
- Возвращает:
- все добавленные
VetoableChangeListeners, или пустой массив, если слушатели не были добавлены - С:
- 1.4
- См. также:
VetoableChangeListenerProxy
addVetoableChangeListener
public void addVetoableChangeListener(String propertyName,
VetoableChangeListener listener) Добавляет обработчик VetoableChangeListener для конкретного свойства. Обработчик будет вызываться только тогда, когда вызов fireVetoableChange называет это конкретное свойство. Один и тот же объект слушателя можно добавлять более одного раза. Для каждого свойства слушатель будет вызываться количество раз, равное количеству добавлений для этого свойства. Если propertyName или listener имеют значение null, исключение не генерируется, и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым нужно следить. -
listener- Добавляемый обработчик VetoableChangeListener - С:
- 1.2
removeVetoableChangeListener
public void removeVetoableChangeListener(String propertyName,
VetoableChangeListener listener) Удаляет обработчик VetoableChangeListener для определенного свойства. Если listener был добавлен более одного раза к тому же источнику событий для указанного свойства, он будет уведомлён на одну попытку меньше после удаления. Если propertyName имеет значение null, исключение не генерируется, и никаких действий не выполняется. Если listener имеет значение null или никогда не был добавлен для указанного свойства, исключение не генерируется, и никаких действий не выполняется.
- Параметры:
-
propertyName- Имя свойства, за которым следили. -
listener- Удаляемый обработчик VetoableChangeListener - С:
- 1.2
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
Возвращает массив всех слушателей, связанных с заданным свойством.
- Параметры:
-
propertyName- Имя свойства, за которым ведётся наблюдение - Возвращает:
- все
VetoableChangeListenersсвязанные с указанным свойством. Если таких слушателей не было добавлено илиpropertyNameравно null, возвращается пустой массив. - С:
- 1.4
fireVetoableChange
public void fireVetoableChange(String propertyName,
Object oldValue,
Object newValue)
throws PropertyVetoException Сообщает слушателям о изменении свойства, к которому они зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Любой слушатель может бросить PropertyVetoException чтобы отклонить обновление. Если один из слушателей отклоняет обновление, этот метод передает новый "откат" PropertyChangeEvent, который возвращает старое значение всем слушателям, которые уже подтвердили это обновление, и снова выбрасывает PropertyVetoException.
Событие не генерируется, если старое и новое значения равны и не равны null.
Это просто удобная обёртка вокруг более общего метода fireVetoableChange(PropertyChangeEvent).
- Параметры:
-
propertyName- Программное имя свойства, которое вот-вот изменится -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - Исключения:
-
PropertyVetoException- Если один из слушателей отклоняет обновление свойства
fireVetoableChange
public void fireVetoableChange(String propertyName,
int oldValue,
int newValue)
throws PropertyVetoException Сообщает слушателям об обновлении целочисленного свойства, к которому они зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Любой слушатель может бросить PropertyVetoException чтобы отклонить обновление. Если один из слушателей отклоняет обновление, этот метод передает новый "откат" PropertyChangeEvent, который возвращает старое значение всем слушателям, которые уже подтвердили это обновление, и снова выбрасывает PropertyVetoException.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная обёртка вокруг более общего метода fireVetoableChange(String, Object, Object).
- Параметры:
-
propertyName- Программное имя свойства, которое вот-вот изменится -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - Исключения:
-
PropertyVetoException- Если один из слушателей отклоняет обновление свойства - С:
- 1.2
fireVetoableChange
public void fireVetoableChange(String propertyName,
boolean oldValue,
boolean newValue)
throws PropertyVetoException Сообщает слушателям об обновлении логического свойства, к которому они зарегистрированы для отслеживания обновлений всех свойств или свойства с указанным именем.
Любой слушатель может бросить PropertyVetoException чтобы отклонить обновление. Если один из слушателей отклоняет обновление, этот метод передает новый "откат" PropertyChangeEvent, который возвращает старое значение всем слушателям, которые уже подтвердили это обновление, и снова выбрасывает PropertyVetoException.
Событие не генерируется, если старое и новое значения равны.
Это просто удобная обёртка вокруг более общего метода fireVetoableChange(String, Object, Object).
- Параметры:
-
propertyName- Программное имя свойства, которое вот-вот изменится -
oldValue- Предыдущее значение свойства -
newValue- Новое значение свойства - Исключения:
-
PropertyVetoException- Если один из слушателей отклоняет обновление свойства - С:
- 1.2
fireVetoableChange
public void fireVetoableChange(PropertyChangeEvent event)
throws PropertyVetoException Отправляет событие изменения свойства слушателям, которые зарегистрированы для отслеживания обновлений всех свойств или свойства с заданным именем.
Любой слушатель может бросить PropertyVetoException чтобы отклонить обновление. Если один из слушателей отклоняет обновление, этот метод передает новый "откат" PropertyChangeEvent, который возвращает старое значение всем слушателям, которые уже подтвердили это обновление, и снова выбрасывает PropertyVetoException.
Событие не генерируется, если старое и новое значения в заданном событии равны и не равны null.
- Параметры:
-
event- СобытиеPropertyChangeEventкоторое нужно отправить - Исключения:
-
PropertyVetoException- Если один из слушателей отклоняет обновление свойства - С:
- 1.2
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/VetoableChangeSupport.html