JavaTM Platform
Standard Ed. 6

java.beans
类 PropertyChangeSupport

java.lang.Object
  继承者 java.beans.PropertyChangeSupport
所有已实现的接口:
Serializable
直接已知子类:
SwingPropertyChangeSupport

public class PropertyChangeSupport
extends Object
implements Serializable

这是一个实用工具类,支持绑定 (bound) 属性的 bean 可以使用该类。可以使用此类的实例作为 bean 的成员字段,并将各种工作委托给它。 此类是可序列化的。在对它进行序列化时,它将保存(并恢复)本身可序列化的所有侦听器。在序列化期间,将跳过所有不可序列化的侦听器。

另请参见:
序列化表格

构造方法摘要
PropertyChangeSupport(Object sourceBean)
          构造一个 PropertyChangeSupport 对象。
 
方法摘要
 void addPropertyChangeListener(PropertyChangeListener listener)
          向侦听器列表添加一个 PropertyChangeListener。
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
          为指定的属性向侦听器列表中添加一个 PropertyChangeListener。
 void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
          以 boolean 值形式报告所有已注册侦听器的绑定索引属性更新。
 void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
          以 int 值形式报告所有已注册侦听器的绑定索引属性更新。
 void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
          报告所有已注册侦听器的绑定 (bound) 索引 (indexed) 属性更新。
 void firePropertyChange(PropertyChangeEvent evt)
          对所有已注册侦听器激发一个现有 PropertyChangeEvent。
 void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
          以 boolean 值形式报告所有已注册侦听器的绑定属性更新。
 void firePropertyChange(String propertyName, int oldValue, int newValue)
          以 int 值形式报告所有已注册侦听器的绑定属性更新。
 void firePropertyChange(String propertyName, Object oldValue, Object newValue)
          报告所有已注册侦听器的绑定属性更新。
 PropertyChangeListener[] getPropertyChangeListeners()
          返回使用 addPropertyChangeListener() 添加到此 PropertyChangeSupport 对象中的所有侦听器组成的数组。
 PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
          返回与指定属性相关联的所有侦听器的列表。
 boolean hasListeners(String propertyName)
          检查是否存在特定属性的任何侦听器,包括那些已在所有属性上注册的侦听器。
 void removePropertyChangeListener(PropertyChangeListener listener)
          从侦听器列表移除一个 PropertyChangeListener。
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
          为特定属性移除一个 PropertyChangeListener。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

PropertyChangeSupport

public PropertyChangeSupport(Object sourceBean)
构造一个 PropertyChangeSupport 对象。

参数:
sourceBean - 作为所有事件的源提供的 bean。
方法详细信息

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
向侦听器列表添加一个 PropertyChangeListener。该侦听器是为所有属性注册的。同一侦听器对象可以被添加多次,并且它们被调用的次数与添加它们的次数相同。如果 listener 为 null,则不会抛出异常并且不执行操作。

参数:
listener - 要添加的 PropertyChangeListener

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
从侦听器列表移除一个 PropertyChangeListener。此方法移除一个为所有属性注册的 PropertyChangeListener。如果将 listener 多次添加到同一事件源,则在被移除之后,它至少将被通知一次。如果 listener 为 null,或者从未被添加,则不会抛出异常并且不执行操作。

参数:
listener - 要移除的 PropertyChangeListener

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
返回使用 addPropertyChangeListener() 添加到此 PropertyChangeSupport 对象中的所有侦听器组成的数组。

如果已经使用指定属性添加一些侦听器,则返回的数组将是 PropertyChangeListener 和 PropertyChangeListenerProxy 的混合物。如果调用方法对区别侦听器感兴趣,那么它必须测试每个元素,以查看该元素是否是一个 PropertyChangeListenerProxy,然后执行强制转换并检查该参数。

 PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
 for (int i = 0; i < listeners.length; i++) {
         if (listeners[i] instanceof PropertyChangeListenerProxy) {
     PropertyChangeListenerProxy proxy = 
                    (PropertyChangeListenerProxy)listeners[i];
     if (proxy.getPropertyName().equals("foo")) {
       // proxy is a PropertyChangeListener which was associated
       // with the property named "foo"
     }
   }
 }

返回:
添加的所有 PropertyChangeListener,如果没有添加侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
PropertyChangeListenerProxy

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener listener)
为指定的属性向侦听器列表中添加一个 PropertyChangeListener。该侦听器只在调用 firePropertyChange 为特定属性命名时调用。可以多次添加同一侦听器对象。对于每个属性,该侦听器被调用的次数与为该属性添加此侦听器的次数相同。如果 propertyNamelistener 为 null,则不会抛出异常并且不执行操作。

参数:
propertyName - 要侦听的属性的名称。
listener - 要添加的 PropertyChangeListener

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName,
                                         PropertyChangeListener listener)
为特定属性移除一个 PropertyChangeListener。如果将 listener 多次添加到指定属性的同一事件源,则在被移除之后,它至少将被通知一次。如果 propertyName 为 null,则不会抛出异常并且不执行操作。如果 listener 为 null,或者从不为指定属性添加 pcl,则不抛出异常并不执行任何操作。

参数:
propertyName - 已被侦听的属性的名称。
listener - 要移除的 PropertyChangeListener

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
返回与指定属性相关联的所有侦听器的列表。

参数:
propertyName - 将被侦听的属性的名称
返回:
与指定属性相关联的所有 PropertyChangeListener。如果没有添加这样的侦听器,或者 propertyName 为 null,则返回一个空数组。
从以下版本开始:
1.4

firePropertyChange

public void firePropertyChange(String propertyName,
                               Object oldValue,
                               Object newValue)
报告所有已注册侦听器的绑定属性更新。如果新属性和旧属性相同并且是非 null 的,则不会触发事件。

这只是一个用来包装获取 PropertyChangeEvent 值的更一般 firePropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
oldValue - 属性的旧值。
newValue - 属性的新值。

firePropertyChange

public void firePropertyChange(String propertyName,
                               int oldValue,
                               int newValue)
以 int 值形式报告所有已注册侦听器的绑定属性更新。如果新属性和旧属性相同,则不会触发事件。

这只是一个用来包装获取 Object 值的更常见 firePropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
oldValue - 属性的旧值。
newValue - 属性的新值。

firePropertyChange

public void firePropertyChange(String propertyName,
                               boolean oldValue,
                               boolean newValue)
以 boolean 值形式报告所有已注册侦听器的绑定属性更新。如果新属性和旧属性相同,则不会触发事件。

这只是一个用来包装获取 Object 值的更常见 firePropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
oldValue - 属性的旧值。
newValue - 属性的新值。

firePropertyChange

public void firePropertyChange(PropertyChangeEvent evt)
对所有已注册侦听器激发一个现有 PropertyChangeEvent。如果给定事件的旧值和新值相等并且都是非 null 的,则不会激发事件。

参数:
evt - PropertyChangeEvent 对象。

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      Object oldValue,
                                      Object newValue)
报告所有已注册侦听器的绑定 (bound) 索引 (indexed) 属性更新。

如果旧值和新值相等并且都是非 null 的,则不会激发事件。

这只是一个用来包装获取 PropertyChangeEvent 值的更一般 firePropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
index - 被更改属性元素的索引。
oldValue - 属性的旧值。
newValue - 属性的新值。
从以下版本开始:
1.5

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      int oldValue,
                                      int newValue)
int 值形式报告所有已注册侦听器的绑定索引属性更新。

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

这只是一个用来包装获取 Object 值的更常见 fireIndexedPropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
index - 被更改属性元素的索引。
oldValue - 属性的旧值。
newValue - 属性的新值。
从以下版本开始:
1.5

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      boolean oldValue,
                                      boolean newValue)
boolean 值形式报告所有已注册侦听器的绑定索引属性更新。

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

这只是一个用来包装获取 Object 值的更常见 fireIndexedPropertyChange 方法的便捷包装器。

参数:
propertyName - 被更改属性的编程名称。
index - 被更改属性元素的索引。
oldValue - 属性的旧值。
newValue - 属性的新值。
从以下版本开始:
1.5

hasListeners

public boolean hasListeners(String propertyName)
检查是否存在特定属性的任何侦听器,包括那些已在所有属性上注册的侦听器。如果 propertyName 为 null,则只检查所有属性上注册的侦听器。

参数:
propertyName - 属性名。
返回:
如果存在给定属性的一个或多个侦听器,则返回 true

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策