- 所有已实现的接口:
Serializable
PropertyChangeEvent
s。您可以使用此类的实例作为 bean 的成员字段并将这些类型的工作委托给它。 PropertyChangeListener
可以为所有属性或由名称指定的属性注册。
以下是 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
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void
将 PropertyChangeListener 添加到监听列表。void
addPropertyChangeListener
(String propertyName, PropertyChangeListener listener) 为特定属性添加 PropertyChangeListener。void
fireIndexedPropertyChange
(String propertyName, int index, boolean oldValue, boolean newValue) 向已注册的监听报告布尔绑定索引属性更新,以跟踪所有属性或具有指定名称的属性的更新。void
fireIndexedPropertyChange
(String propertyName, int index, int oldValue, int newValue) 向已注册以跟踪所有属性或具有指定名称的属性的更新的监听报告整数绑定索引属性更新。void
fireIndexedPropertyChange
(String propertyName, int index, Object oldValue, Object newValue) 向已注册的监听报告绑定索引属性更新,以跟踪所有属性或具有指定名称的属性的更新。void
向已注册的监听触发属性更改事件,以跟踪所有属性或具有指定名称的属性的更新。void
firePropertyChange
(String propertyName, boolean oldValue, boolean newValue) 向已注册的监听报告布尔绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。void
firePropertyChange
(String propertyName, int oldValue, int newValue) 向已注册以跟踪所有属性或具有指定名称的属性的更新的监听报告整数绑定属性更新。void
firePropertyChange
(String propertyName, Object oldValue, Object newValue) 向已注册的监听报告绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。返回使用 addPropertyChangeListener() 添加到 PropertyChangeSupport 对象的所有监听的数组。getPropertyChangeListeners
(String propertyName) 返回与指定属性关联的所有监听的数组。boolean
hasListeners
(String propertyName) 检查是否有任何特定属性的监听,包括在所有属性上注册的监听。void
从监听列表中删除 PropertyChangeListener。void
removePropertyChangeListener
(String propertyName, PropertyChangeListener listener) 删除特定属性的 PropertyChangeListener。
-
构造方法详细信息
-
PropertyChangeSupport
构造一个PropertyChangeSupport
对象。- 参数:
sourceBean
- 作为任何事件的源提供的 bean。
-
-
方法详情
-
addPropertyChangeListener
将 PropertyChangeListener 添加到监听器列表。监听器已为所有属性注册。同一个监听器对象可能被添加多次,添加多少次就会被调用多少次。如果listener
为 null,则不会抛出异常且不会采取任何操作。- 参数:
listener
- 要添加的 PropertyChangeListener
-
removePropertyChangeListener
从监听器列表中删除 PropertyChangeListener。这将删除为所有属性注册的 PropertyChangeListener。如果listener
被多次添加到同一事件源,则在删除后将少通知一次。如果listener
为 null,或者从未添加过,则不会抛出异常并且不会采取任何操作。- 参数:
listener
- 要删除的 PropertyChangeListener
-
getPropertyChangeListeners
返回使用 addPropertyChangeListener() 添加到 PropertyChangeSupport 对象的所有监听的数组。如果某些监听器已添加了命名属性,则返回的数组将是 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
- 参见:
-
addPropertyChangeListener
为特定属性添加 PropertyChangeListener。仅当对 firePropertyChange 的调用命名该特定属性时,才会调用监听器。可以多次添加相同的监听器对象。对于每个属性,将调用监听器为该属性添加的次数。如果propertyName
或listener
为 null,则不会抛出异常且不会采取任何操作。- 参数:
propertyName
- 要监听的属性的名称。listener
- 要添加的 PropertyChangeListener- 自从:
- 1.2
-
removePropertyChangeListener
删除特定属性的 PropertyChangeListener。如果listener
被多次添加到指定属性的同一事件源,则在删除后通知它的时间会减少一次。如果propertyName
为 null,则不会抛出异常且不会采取任何操作。如果listener
为 null,或者从未为指定的属性添加,则不会抛出任何异常,也不会采取任何操作。- 参数:
propertyName
- 被监听的属性的名称。listener
- 要删除的 PropertyChangeListener- 自从:
- 1.2
-
getPropertyChangeListeners
返回与指定属性关联的所有监听的数组。- 参数:
propertyName
- 被监听的属性名称- 返回:
-
所有与命名属性关联的
PropertyChangeListeners
。如果没有添加这样的监听器,或者如果propertyName
为空,则返回一个空数组。 - 自从:
- 1.4
-
firePropertyChange
向已注册的监听报告绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。如果旧值和新值相等且非空,则不会触发任何事件。
这只是更通用的
firePropertyChange(PropertyChangeEvent)
方法的便利包装。- 参数:
propertyName
- 已更改属性的编程名称oldValue
- 属性的旧值newValue
- 属性的新值
-
firePropertyChange
向已注册以跟踪所有属性或具有指定名称的属性的更新的监听报告整数绑定属性更新。如果旧值和新值相等,则不会触发任何事件。
这只是更通用的
firePropertyChange(String, Object, Object)
方法的便利包装。- 参数:
propertyName
- 已更改属性的编程名称oldValue
- 属性的旧值newValue
- 属性的新值- 自从:
- 1.2
-
firePropertyChange
向已注册的监听报告布尔绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。如果旧值和新值相等,则不会触发任何事件。
这只是更通用的
firePropertyChange(String, Object, Object)
方法的便利包装。- 参数:
propertyName
- 已更改属性的编程名称oldValue
- 属性的旧值newValue
- 属性的新值- 自从:
- 1.2
-
firePropertyChange
向已注册的监听触发属性更改事件,以跟踪所有属性或具有指定名称的属性的更新。如果给定事件的旧值和新值相等且非空,则不会触发任何事件。
- 参数:
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
向已注册以跟踪所有属性或具有指定名称的属性的更新的监听报告整数绑定索引属性更新。如果旧值和新值相等,则不会触发任何事件。
这只是更通用的
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
检查是否有任何特定属性的监听器,包括在所有属性上注册的监听器。如果propertyName
为 null,则仅检查在所有属性上注册的监听器。- 参数:
propertyName
- 属性名称。- 返回:
- 如果给定属性有一个或多个监听,则为真
- 自从:
- 1.2
-