- 所有已实现的接口:
Serializable
PropertyChangeEvent s。您可以使用此类的实例作为 bean 的成员字段并将这些类型的工作委托给它。 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
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void将 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。
-
构造方法详细信息
-
VetoableChangeSupport
构造一个VetoableChangeSupport对象。- 参数:
sourceBean- 作为任何事件的源提供的 bean。
-
-
方法详情
-
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 is a VetoableChangeListener which was associated // with the property named "foo" } } }- 返回:
-
所有
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为空,则返回一个空数组。 - 自从:
- 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- 属性名称。- 返回:
- 如果给定属性有一个或多个监听,则为真
- 自从:
- 1.2
-