- 所有实现的接口:
-
Serializable
PropertyChangeEvent 分派给它们。您可以将此类的实例用作bean的成员字段,并将这些类型的工作委托给它。可以为所有属性或指定名称的属性注册 VetoableChangeListener。
以下是遵循JavaBeans规范中规则和建议的 VetoableChangeSupport 使用示例:
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
- 参见:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid将一个 VetoableChangeListener 添加到监听器列表中。voidaddVetoableChangeListener(String propertyName, VetoableChangeListener listener) 为特定属性添加一个 VetoableChangeListener。void向已注册以跟踪所有属性更新或具有指定名称的属性的监听器发送属性更改事件。voidfireVetoableChange(String propertyName, boolean oldValue, boolean newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告布尔约束属性更新。voidfireVetoableChange(String propertyName, int oldValue, int newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告整数约束属性更新。voidfireVetoableChange(String propertyName, Object oldValue, Object newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告约束属性更新。返回使用 addVetoableChangeListener() 添加到 VetoableChangeSupport 对象的所有监听器的数组。getVetoableChangeListeners(String propertyName) 返回已与指定属性关联的所有监听器的数组。booleanhasListeners(String propertyName) 检查是否有任何特定属性的监听器,包括在所有属性上注册的监听器。void从监听器列表中移除一个 VetoableChangeListener。voidremoveVetoableChangeListener(String propertyName, VetoableChangeListener listener) 为特定属性移除一个 VetoableChangeListener。
-
Constructor Details
-
VetoableChangeSupport
构造一个VetoableChangeSupport对象。- 参数:
-
sourceBean- 作为任何事件源的源的 bean。
-
-
Method Details
-
addVetoableChangeListener
将一个 VetoableChangeListener 添加到监听器列表中。该监听器将注册为所有属性。同一个监听器对象可以添加多次,并且每次添加都会调用。如果listener为 null,则不会抛出异常,也不会执行任何操作。- 参数:
-
listener- 要添加的 VetoableChangeListener
-
removeVetoableChangeListener
从监听器列表中移除一个 VetoableChangeListener。这将移除为所有属性注册的 VetoableChangeListener。如果同一个事件源上多次添加了listener,则在移除后将少通知一次。如果listener为 null,或者从未为同一属性添加过,则不会抛出异常,也不会执行任何操作。- 参数:
-
listener- 要移除的 VetoableChangeListener
-
getVetoableChangeListeners
返回使用 addVetoableChangeListener() 添加到 VetoableChangeSupport 对象的所有监听器的数组。如果已使用命名属性添加了一些监听器,则返回的数组将是 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 是一个与名为 "foo" 的属性关联的 VetoableChangeListener } } }- 返回:
-
所有添加的
VetoableChangeListeners或如果没有添加任何监听器则返回空数组 - 自从:
- 1.4
- 参见:
-
addVetoableChangeListener
为特定属性添加一个 VetoableChangeListener。只有在调用 fireVetoableChange 时命名了特定属性时,才会调用该监听器。同一个监听器对象可以添加多次。对于每个属性,将为该属性添加的次数调用该监听器。如果propertyName或listener为 null,则不会抛出异常,也不会执行任何操作。- 参数:
-
propertyName- 要监听的属性的名称。 -
listener- 要添加的 VetoableChangeListener - 自从:
- 1.2
-
removeVetoableChangeListener
为特定属性移除一个 VetoableChangeListener。如果同一个事件源上为指定属性多次添加了listener,则在移除后将少通知一次。如果propertyName为 null,则不会抛出异常,也不会执行任何操作。如果listener为 null,或者从未为指定属性添加过,则不会抛出异常,也不会执行任何操作。- 参数:
-
propertyName- 要监听的属性的名称。 -
listener- 要移除的 VetoableChangeListener - 自从:
- 1.2
-
getVetoableChangeListeners
返回已与指定属性关联的所有监听器的数组。- 参数:
-
propertyName- 正在监听的属性的名称 - 返回:
-
所有与指定属性关联的
VetoableChangeListeners。如果没有添加此类监听器,或者propertyName为 null,则返回一个空数组。 - 自从:
- 1.4
-
fireVetoableChange
public void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告约束属性更新。任何监听器都可以抛出
PropertyVetoException来否决更新。如果其中一个监听器否决了更新,此方法将向已确认此更新的所有监听器传递一个新的“撤销”PropertyChangeEvent,将其恢复为旧值,并再次抛出PropertyVetoException。如果旧值和新值相等且非空,则不会触发事件。
这只是对更一般的
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
向已注册以跟踪所有属性或具有指定名称的属性的更新的监听器触发属性更改事件。任何监听器都可以抛出
PropertyVetoException来否决更新。如果其中一个监听器否决更新,此方法将向已确认此更新的所有监听器传递一个新的“撤销”PropertyChangeEvent,将其恢复为旧值,并再次抛出PropertyVetoException。如果给定事件的旧值和新值相等且非空,则不会触发事件。
- 参数:
-
event- 要触发的PropertyChangeEvent - 抛出:
-
PropertyVetoException- 如果其中一个监听器否决属性更新 - 自版本:
- 1.2
-
hasListeners
检查是否有任何特定属性的监听器,包括那些在所有属性上注册的监听器。如果propertyName为null,则仅检查在所有属性上注册的监听器。- 参数:
-
propertyName- 属性名称。 - 返回:
- 如果给定属性有一个或多个监听器,则返回true
- 自版本:
- 1.2
-