public class VetoableChangeSupport extends Object implements Serializable
PropertyChangeEvent 。 
       您可以使用此类的实例作为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实例是线程安全的。 
这个类是可序列化的。 当它被序列化时,它将保存(并恢复)本身可序列化的任何侦听器。 在序列化期间,任何不可序列化的监听器都将被跳过。
PropertyChangeSupport , Serialized Form 
       | Constructor and Description | 
|---|
| VetoableChangeSupport(Object sourceBean)
              构造一个 
              VetoableChangeSupport对象。 | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
              为特定属性添加VetoableChangeListener。 
             | 
| void | addVetoableChangeListener(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(String propertyName, VetoableChangeListener listener)
              删除特定属性的VetoableChangeListener。 
             | 
| void | removeVetoableChangeListener(VetoableChangeListener listener)
              从侦听器列表中删除VetoableChangeListener。 
             | 
public VetoableChangeSupport(Object sourceBean)
VetoableChangeSupport对象。 
          sourceBean - 要作为任何事件来源的bean。 
           public void addVetoableChangeListener(VetoableChangeListener listener)
listener为空,则不抛出任何异常并且不采取任何操作。 
          listener - 要添加的VetoableChangeListener 
           public void removeVetoableChangeListener(VetoableChangeListener listener)
listener添加到同一个事件源, listener删除后将被通知一次。 
           如果listener为空,或者从未添加过,则不会抛出任何异常,也不会执行任何操作。 
          listener - 要删除的VetoableChangeListener 
           public VetoableChangeListener[] getVetoableChangeListeners()
 如果有一些监听器已经添加了一个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或一个空数组,如果没有添加任何监听器 
           VetoableChangeListenerProxy 
           public void addVetoableChangeListener(String propertyName, VetoableChangeListener listener)
propertyName或listener为空,则不会抛出异常并且不采取任何操作。 
          propertyName - 要收听的属性的名称。 
           listener - 要添加的VetoableChangeListener 
           public void removeVetoableChangeListener(String propertyName, VetoableChangeListener listener)
listener添加到指定属性的同一事件源,则会在被删除之后被通知一次。 
           如果propertyName为null,则不会抛出异常并且不采取任何操作。 
           如果listener为空,或者从未为指定的属性添加,则不会抛出异常并且不执行任何操作。 
          propertyName - 收听的财产的名称。 
           listener - 要删除的VetoableChangeListener 
           public VetoableChangeListener[] getVetoableChangeListeners(String propertyName)
propertyName - 正在收听的财产的名称 
           VetoableChangeListeners与指定属性相关联。 
            如果没有添加这样的侦听器,或者如果propertyName为null,则返回一个空数组。 
           public void fireVetoableChange(String propertyName, Object oldValue, Object newValue) throws PropertyVetoException
 任何听众都可以扔一个PropertyVetoException来否决更新。 如果其中一个听众否决更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,该旧的值将恢复为已经确认此更新的所有侦听器的旧值,并再次抛出PropertyVetoException 。 
如果旧值和新值相等且不为空,则不会触发事件。
 这只是一个方便的包装围绕更一般的fireVetoableChange(PropertyChangeEvent)方法。 
propertyName - 即将更改的属性的编程名称 
           oldValue - 该物业的旧值 
           newValue - 该属性的新值 
           PropertyVetoException - 如果其中一个收听者否决属性更新 
           public void fireVetoableChange(String propertyName, int oldValue, int newValue) throws PropertyVetoException
 任何听众可以扔一个PropertyVetoException否决更新。 如果其中一个收听者否决更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,该旧的值将恢复为已经确认此更新的所有侦听器的旧值,并再次抛出PropertyVetoException 。 
如果旧值和新值相等,则不会触发任何事件。
 这只是一个方便的包装围绕更一般的fireVetoableChange(String, Object, Object)方法。 
propertyName - 即将更改的属性的编程名称 
           oldValue - 该物业的旧值 
           newValue - 该属性的新值 
           PropertyVetoException - 如果其中一个收听者否决属性更新 
           public void fireVetoableChange(String propertyName, boolean oldValue, boolean newValue) throws PropertyVetoException
 任何听众可以抛出一个PropertyVetoException否决更新。 如果其中一个收听者否决更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,该旧的值将恢复为已经确认此更新的所有侦听器,并再次抛出PropertyVetoException 。 
如果旧值和新值相等,则不会触发任何事件。
 这只是一个方便的包装围绕更一般的fireVetoableChange(String, Object, Object)方法。 
propertyName - 即将更改的属性的编程名称 
           oldValue - 该属性的旧值 
           newValue - 该物业的新值 
           PropertyVetoException - 如果其中一个收听者否决属性更新 
           public void fireVetoableChange(PropertyChangeEvent event) throws PropertyVetoException
 任何听众都可以扔一个PropertyVetoException来否决更新。 如果其中一个收听者否决更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,该旧的值将恢复为已经确认此更新的所有侦听器的旧值,并再次抛出PropertyVetoException 。 
如果给定事件的旧值和新值相等且非空值,则不会触发事件。
event - 要解雇的 
            PropertyChangeEvent 
           PropertyVetoException - 如果其中一个收听者否决属性更新 
           public boolean hasListeners(String propertyName)
propertyName为null,则只检查在所有属性上注册的侦听器。 
          propertyName - 属性名称。 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.