- java.lang.Object
-
- java.beans.PropertyChangeSupport
-
- All Implemented Interfaces:
-
Serializable
- 已知直接子类:
-
SwingPropertyChangeSupport
public class PropertyChangeSupport extends Object implements Serializable
这是一个可以由支持绑定属性的bean使用的实用程序类。 它管理一个监听器列表,并向他们发送PropertyChangeEvent。 您可以使用此类的实例作为bean的成员字段,并将这些类型的工作委派给它。PropertyChangeListener可以注册所有属性或由name指定的属性。下面是一个
PropertyChangeSupport用法的例子,它们遵循JavaBeans的规范中规定的规则和建议:public class MyBean { private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); public void addPropertyChangeListener(PropertyChangeListener listener) { this.pcs.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { this.pcs.removePropertyChangeListener(listener); } private String value; public String getValue() { return this.value; } public void setValue(String newValue) { String oldValue = this.value; this.value = newValue; this.pcs.firePropertyChange("value", oldValue, newValue); } [...] }一个
PropertyChangeSupport实例是线程安全的。这个类是可序列化的。 当它被序列化时,它将保存(并恢复)本身可序列化的任何侦听器。 在序列化期间,任何不可序列化的监听器将被跳过。
- 从以下版本开始:
- 1.1
- 另请参见:
-
VetoableChangeSupport, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 PropertyChangeSupport(Object sourceBean)构造一个PropertyChangeSupport对象。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidaddPropertyChangeListener(PropertyChangeListener listener)将一个PropertyChangeListener添加到侦听器列表。voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener)为特定属性添加PropertyChangeListener。voidfireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)向已注册的侦听器报告布尔绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)向已注册的监听器报告整数绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)向已注册的监听器报告绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfirePropertyChange(PropertyChangeEvent event)将属性更改事件触发到已注册的跟踪器,以跟踪所有属性的更新或具有指定名称的属性。voidfirePropertyChange(String propertyName, boolean oldValue, boolean newValue)向已注册的侦听器报告布尔绑定属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfirePropertyChange(String propertyName, int oldValue, int newValue)向已注册的监听器报告整数绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。voidfirePropertyChange(String propertyName, Object oldValue, Object newValue)向已注册的监听器报告绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。PropertyChangeListener[]getPropertyChangeListeners()返回使用addPropertyChangeListener()添加到PropertyChangeSupport对象的所有侦听器的数组。PropertyChangeListener[]getPropertyChangeListeners(String propertyName)返回与named属性相关联的所有侦听器的数组。booleanhasListeners(String propertyName)检查是否有特定属性的监听器,包括在所有属性上注册的监听器。voidremovePropertyChangeListener(PropertyChangeListener listener)从侦听器列表中删除一个PropertyChangeListener。voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener)删除特定属性的PropertyChangeListener。
-
-
-
构造方法详细信息
-
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为空,或者从未添加,则不会抛出异常,也不会执行任何操作。- 参数
-
listener- 要删除的PropertyChangeListener
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners()
返回使用addPropertyChangeListener()添加到PropertyChangeSupport对象的所有侦听器的数组。如果一些监听器已经添加了一个named属性,那么返回的数组将是PropertyChangeListeners和
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" } } }- 结果
-
如果没有添加任何监听器,则添加所有
PropertyChangeListeners或一个空数组 - 从以下版本开始:
- 1.4
- 另请参见:
-
PropertyChangeListenerProxy
-
addPropertyChangeListener
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
为特定属性添加PropertyChangeListener。 只有当调用firePropertyChange命名该特定属性时,才会调用该侦听器。 可以多次添加相同的侦听器对象。 对于每个属性,侦听器将被调用为该属性添加的次数。 如果propertyName或listener为空,则不会抛出异常,并且不执行任何操作。- 参数
-
propertyName- 要收听的财产的名称。 -
listener- 要添加的PropertyChangeListener - 从以下版本开始:
- 1.2
-
removePropertyChangeListener
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
删除特定属性的PropertyChangeListener。 如果listener添加到指定属性的同一事件源,则会在被删除之后被通知一次。 如果propertyName为空,则不会抛出任何异常,也不会执行任何操作。 如果listener为空,或者从未为指定的属性添加,则不会抛出异常并且不执行任何操作。- 参数
-
propertyName- 收听的财产的名称。 -
listener- 要删除的PropertyChangeListener - 从以下版本开始:
- 1.2
-
getPropertyChangeListeners
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
返回与named属性相关联的所有侦听器的数组。- 参数
-
propertyName- 正在收听的财产的名称 - 结果
-
所有的
PropertyChangeListeners与命名属性相关联。 如果没有添加这样的侦听器,或者如果propertyName为null,则返回一个空数组。 - 从以下版本开始:
- 1.4
-
firePropertyChange
public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
向已注册的监听器报告绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等且不为空,则不会触发事件。
这只是一个方便的包装器,围绕更一般的
firePropertyChange(PropertyChangeEvent)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
oldValue- 该物业的旧值 -
newValue- 物业的新价值
-
firePropertyChange
public void firePropertyChange(String propertyName, int oldValue, int newValue)
向已注册的监听器报告整数绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装,围绕更一般的
firePropertyChange(String, Object, Object)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
oldValue- 物业的旧价值 -
newValue- 该物业的新值 - 从以下版本开始:
- 1.2
-
firePropertyChange
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
向已注册的侦听器报告布尔绑定属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装,围绕更一般的
firePropertyChange(String, Object, Object)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
oldValue- 该物业的旧值 -
newValue- 该物业的新价值 - 从以下版本开始:
- 1.2
-
firePropertyChange
public void firePropertyChange(PropertyChangeEvent event)
将属性更改事件触发到已注册的跟踪器,以跟踪所有属性的更新或具有指定名称的属性。如果给定事件的旧值和新值相等且非空值,则不会触发事件。
- 参数
-
event- 要解雇的PropertyChangeEvent - 从以下版本开始:
- 1.2
-
fireIndexedPropertyChange
public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
向已注册的监听器报告绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等且不为空,则不会触发事件。
这只是一个方便的包装,围绕更一般的
firePropertyChange(PropertyChangeEvent)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
index- 已更改的属性元素的索引 -
oldValue- 该物业的旧值 -
newValue- 物业的新价值 - 从以下版本开始:
- 1.5
-
fireIndexedPropertyChange
public void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
向已注册的监听器报告整数绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装器,围绕更一般的
fireIndexedPropertyChange(String, int, Object, Object)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
index- 已更改的属性元素的索引 -
oldValue- 物业的旧值 -
newValue- 物业的新价值 - 从以下版本开始:
- 1.5
-
fireIndexedPropertyChange
public void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
向已注册的侦听器报告布尔绑定的索引属性更新,以跟踪所有属性的更新或具有指定名称的属性。如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装,围绕更一般的
fireIndexedPropertyChange(String, int, Object, Object)方法。- 参数
-
propertyName- 已更改的属性的编程名称 -
index- 已更改的属性元素的索引 -
oldValue- 物业的旧值 -
newValue- 该物业的新值 - 从以下版本开始:
- 1.5
-
hasListeners
public boolean hasListeners(String propertyName)
检查是否有特定属性的监听器,包括在所有属性上注册的监听器。 如果propertyName为null,则只检查在所有属性上注册的侦听器。- 参数
-
propertyName- 属性名称。 - 结果
- 如果给定属性有一个或多个侦听器,则为true
- 从以下版本开始:
- 1.2
-
-