- 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 方法 描述 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()
返回使用addVetoableChangeListener()添加到VetoableChangeSupport对象的所有侦听器的数组。VetoableChangeListener[]
getVetoableChangeListeners(String propertyName)
返回与named属性相关联的所有侦听器的数组。boolean
hasListeners(String propertyName)
检查是否有特定属性的监听器,包括在所有属性上注册的监听器。void
removeVetoableChangeListener(VetoableChangeListener listener)
从侦听器列表中删除VetoableChangeListener。void
removeVetoableChangeListener(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
-
-