- 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 方法 描述 void
addPropertyChangeListener(PropertyChangeListener listener)
将一个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
firePropertyChange(PropertyChangeEvent event)
将属性更改事件触发到已注册的跟踪器,以跟踪所有属性的更新或具有指定名称的属性。void
firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
向已注册的侦听器报告布尔绑定属性更新,以跟踪所有属性的更新或具有指定名称的属性。void
firePropertyChange(String propertyName, int oldValue, int newValue)
向已注册的监听器报告整数绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。void
firePropertyChange(String propertyName, Object oldValue, Object newValue)
向已注册的监听器报告绑定的属性更新,以跟踪所有属性的更新或具有指定名称的属性。PropertyChangeListener[]
getPropertyChangeListeners()
返回使用addPropertyChangeListener()添加到PropertyChangeSupport对象的所有侦听器的数组。PropertyChangeListener[]
getPropertyChangeListeners(String propertyName)
返回与named属性相关联的所有侦听器的数组。boolean
hasListeners(String propertyName)
检查是否有特定属性的监听器,包括在所有属性上注册的监听器。void
removePropertyChangeListener(PropertyChangeListener listener)
从侦听器列表中删除一个PropertyChangeListener。void
removePropertyChangeListener(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
-
-