模块  java.desktop
软件包  java.beans

Class VetoableChangeSupport

  • 实现的所有接口
    Serializable

    public class VetoableChangeSupport
    extends Object
    implements Serializable
    这是一个可以由支持约束属性的bean使用的实用程序类。 它管理一个监听器列表并向他们发送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实例是线程安全的。

    这个类是可序列化的。 当它被序列化时,它将保存(和恢复)任何本身可序列化的侦听器。 序列化期间将跳过任何不可序列化的侦听器。

    从以下版本开始:
    1.1
    另请参见:
    PropertyChangeSupportSerialized Form
    • 构造方法详细信息

      • VetoableChangeSupport

        public VetoableChangeSupport​(Object sourceBean)
        构造一个 VetoableChangeSupport对象。
        参数
        sourceBean - 要作为任何事件的源提供的bean。
    • 方法详细信息

      • addVetoableChangeListener

        public void addVetoableChangeListener​(VetoableChangeListener listener)
        将VetoableChangeListener添加到侦听器列表。 监听器已注册所有属性。 可以多次添加相同的侦听器对象,并且在添加时将多次调用它。 如果listener为null,则不会引发任何异常并且不执行任何操作。
        参数
        listener - 要添加的VetoableChangeListener
      • removeVetoableChangeListener

        public void removeVetoableChangeListener​(VetoableChangeListener listener)
        从侦听器列表中删除VetoableChangeListener。 这将删除为所有属性注册的VetoableChangeListener。 如果listenerlistener添加到同一事件源,则会在删除后将其通知一次。 如果listener为null,或者从未添加过,则不会引发任何异常并且不执行任何操作。
        参数
        listener - 要删除的VetoableChangeListener
      • getVetoableChangeListeners

        public VetoableChangeListener[] getVetoableChangeListeners()
        返回使用addVetoableChangeListener()添加到VetoableChangeSupport对象的所有侦听器的数组。

        如果某些侦听器添加了命名属性,则返回的数组将是VetoableChangeListeners和VetoableChangeListenerProxy的混合。 如果调用方法有兴趣区分侦听器,那么它必须测试每个元素以查看它是否为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的调用命名该特定属性时,才会调用该侦听器。 可以多次添加相同的侦听器对象。 对于每个属性,将调用侦听器为该属性添加的次数。 如果propertyNamelistener为null,则不会引发任何异常并且不执行任何操作。
        参数
        propertyName - 要侦听的属性的名称。
        listener - 要添加的VetoableChangeListener
        从以下版本开始:
        1.2
      • removeVetoableChangeListener

        public void removeVetoableChangeListener​(String propertyName,
                                                 VetoableChangeListener listener)
        删除特定属性的VetoableChangeListener。 如果listenerlistener添加到指定属性的同一事件源,则会在删除后将其通知一次。 如果propertyName为null,则不会引发任何异常并且不执行任何操作。 如果listener为null,或者从未为指定的属性添加,则不会引发任何异常并且不执行任何操作。
        参数
        propertyName - 已侦听的属性的名称。
        listener - 要删除的VetoableChangeListener
        从以下版本开始:
        1.2
      • getVetoableChangeListeners

        public VetoableChangeListener[] getVetoableChangeListeners​(String propertyName)
        返回已与命名属性关联的所有侦听器的数组。
        参数
        propertyName - 正在侦听的属性的名称
        结果
        所有VetoableChangeListeners与命名属性相关联。 如果未添加此类侦听器,或者如果propertyName为null,则返回空数组。
        从以下版本开始:
        1.4
      • fireVetoableChange

        public void fireVetoableChange​(String propertyName,
                                       Object oldValue,
                                       Object newValue)
                                throws PropertyVetoException
        向已注册以跟踪所有属性或具有指定名称的属性的更新的侦听器报告受约束的属性更新。

        任何监听者都可以抛出PropertyVetoException否决更新。 如果其中一个侦听器否决了更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,它将旧值恢复为已经确认此更新的所有侦听器,并再次抛出PropertyVetoException

        如果旧值和新值相等且非null,则不会触发任何事件。

        这仅仅是围绕更一般的fireVetoableChange(PropertyChangeEvent)方法的便利包装器。

        参数
        propertyName - 即将更改的属性的编程名称
        oldValue - 该物业的旧价值
        newValue - 该属性的新值
        异常
        PropertyVetoException - 如果其中一个听众否决了该属性更新
      • fireVetoableChange

        public void fireVetoableChange​(String propertyName,
                                       int oldValue,
                                       int newValue)
                                throws PropertyVetoException
        向已注册以跟踪所有属性或具有指定名称的属性的更新的侦听器报告整数约束属性更新。

        任何听众都可以抛出PropertyVetoException否决更新。 如果其中一个侦听器否决了更新,则此方法传递一个新的“撤消” PropertyChangeEvent ,该值将恢复为旧值,以便已经确认此更新的所有侦听PropertyVetoException再次抛出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再次抛出PropertyVetoException

        如果旧值和新值相等,则不会触发任何事件。

        这只是一个更方便的fireVetoableChange(String, Object, Object)方法的便利包装器。

        参数
        propertyName - 即将更改的属性的编程名称
        oldValue - 该物业的旧价值
        newValue - 该属性的新值
        异常
        PropertyVetoException - 如果其中一个听众否决了该属性更新
        从以下版本开始:
        1.2
      • fireVetoableChange

        public void fireVetoableChange​(PropertyChangeEvent event)
                                throws PropertyVetoException
        将属性更改事件触发到已注册以跟踪所有属性或具有指定名称的属性的更新的侦听器。

        任何监听者都可以抛出PropertyVetoException来否决更新。 如果其中一个侦听器否决了更新,则此方法会传递一个新的“撤消” PropertyChangeEvent ,该值将恢复为旧值,以便已经确认此更新的所有侦听PropertyVetoException再次抛出PropertyVetoException

        如果给定事件的旧值和新值相等且非null,则不会触发任何事件。

        参数
        event - 要解雇的 PropertyChangeEvent
        异常
        PropertyVetoException - 如果其中一个听众否决了该属性更新
        从以下版本开始:
        1.2
      • hasListeners

        public boolean hasListeners​(String propertyName)
        检查是否有特定属性的侦听器,包括在所有属性上注册的属性。 如果propertyName为null,则仅检查在所有属性上注册的侦听器。
        参数
        propertyName - 房产名称。
        结果
        如果给定属性有一个或多个侦听器,则为true
        从以下版本开始:
        1.2