- java.lang.Object
-
- java.beans.VetoableChangeSupport
-
- All Implemented Interfaces:
-
Serializable
public class VetoableChangeSupport extends Object implements Serializable
这是一个可以由支持约束属性的bean使用的实用程序类。 它管理一个监听器列表, 并发送给他们PropertyChangeEvent。 您可以使用此类的实例作为bean的成员字段,并将这些类型的工作委派给它。VetoableChangeListener可以注册所有属性或由name指定的属性。下面是一个
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, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 VetoableChangeSupport(Object sourceBean)构造一个VetoableChangeSupport对象。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidaddVetoableChangeListener(VetoableChangeListener listener)将VetoableChangeListener添加到侦听器列表。voidaddVetoableChangeListener(String propertyName, VetoableChangeListener listener)为特定属性添加VetoableChangeListener。voidfireVetoableChange(PropertyChangeEvent event)将属性更改事件触发到已注册的跟踪器,以跟踪所有属性的更新或具有指定名称的属性。voidfireVetoableChange(String propertyName, boolean oldValue, boolean newValue)向已注册的监听器报告布尔约束属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfireVetoableChange(String propertyName, int oldValue, int newValue)向已注册的监听器报告整数约束属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfireVetoableChange(String propertyName, Object oldValue, Object newValue)向已注册的监听器报告受限属性更新,以跟踪所有属性的更新或具有指定名称的属性。VetoableChangeListener[]getVetoableChangeListeners()返回使用addVetoableChangeListener()添加到VetoableChangeSupport对象的所有侦听器的数组。VetoableChangeListener[]getVetoableChangeListeners(String propertyName)返回与named属性相关联的所有侦听器的数组。booleanhasListeners(String propertyName)检查是否有特定属性的监听器,包括在所有属性上注册的监听器。voidremoveVetoableChangeListener(VetoableChangeListener listener)从侦听器列表中删除VetoableChangeListener。voidremoveVetoableChangeListener(String propertyName, VetoableChangeListener listener)删除特定属性的VetoableChangeListener。
-
-
-
构造方法详细信息
-
VetoableChangeSupport
public VetoableChangeSupport(Object sourceBean)
构造一个VetoableChangeSupport对象。- 参数
-
sourceBean- 要作为任何事件来源的bean。
-
-
方法详细信息
-
addVetoableChangeListener
public void addVetoableChangeListener(VetoableChangeListener listener)
将VetoableChangeListener添加到侦听器列表。 所有属性都注册了监听器。 同一个侦听器对象可以被多次添加,并且将被调用多次,因为它被添加。 如果listener为空,则不会抛出任何异常,也不会执行任何操作。- 参数
-
listener- 要添加的VetoableChangeListener
-
removeVetoableChangeListener
public void removeVetoableChangeListener(VetoableChangeListener listener)
从侦听器列表中删除VetoableChangeListener。 这会删除已为所有属性注册的VetoableChangeListener。 如果listener添加到同一个事件源,则会在被删除之后被通知一次。 如果listener为空,或者从未添加,则不会抛出异常并且不采取任何操作。- 参数
-
listener- 要删除的VetoableChangeListener
-
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners()
返回使用addVetoableChangeListener()添加到VetoableChangeSupport对象的所有侦听器的数组。如果一些侦听器已经添加了一个named属性,那么返回的数组将是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为空,则不会抛出任何异常并且不采取任何操作。- 参数
-
propertyName- 要收听的属性的名称。 -
listener- 要添加的VetoableChangeListener - 从以下版本开始:
- 1.2
-
removeVetoableChangeListener
public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
删除特定属性的VetoableChangeListener。 如果listener添加到指定属性的同一事件源,则在被删除之后将被通知一次。 如果propertyName为空,则不会抛出异常并且不采取任何操作。 如果listener为空,或者从未为指定的属性添加,则不会抛出任何异常,也不会执行任何操作。- 参数
-
propertyName- 收听的财产的名称。 -
listener- 要删除的VetoableChangeListener - 从以下版本开始:
- 1.2
-
getVetoableChangeListeners
public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
返回与named属性相关联的所有侦听器的数组。- 参数
-
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
public void fireVetoableChange(PropertyChangeEvent event) throws PropertyVetoException
将属性更改事件触发到已注册的跟踪器,以跟踪所有属性的更新或具有指定名称的属性。任何听众都可以抛出一个
PropertyVetoException否决更新。 如果其中一个收听者否决更新,则此方法会传递一个新的“撤消”PropertyChangeEvent,该旧的值将恢复为已经确认此更新的所有侦听器的旧值,并再次抛出PropertyVetoException。如果给定事件的旧值和新值相等且非空值,则不会触发事件。
- 参数
-
event- 要解雇的PropertyChangeEvent - 异常
-
PropertyVetoException- 如果其中一个监听器否决属性更新 - 从以下版本开始:
- 1.2
-
hasListeners
public boolean hasListeners(String propertyName)
检查是否有特定属性的监听器,包括在所有属性上注册的监听器。 如果propertyName为null,则仅检查在所有属性上注册的侦听器。- 参数
-
propertyName- 属性名称。 - 结果
- 如果给定属性有一个或多个侦听器,则为true
- 从以下版本开始:
- 1.2
-
-