public class PropertyChangeSupport
extends Object
implements Serializable
java.lang.Object | |
↳ | java.beans.PropertyChangeSupport |
这是一个实用程序类,可以被支持绑定属性的bean使用。 它管理听众列表并向他们发送PropertyChangeEvent
。 您可以使用此类的实例作为您的bean的成员字段,并将这些类型的工作委托给它。 PropertyChangeListener
可以注册所有属性或按名称指定的属性。
以下是 PropertyChangeSupport
用法的示例, PropertyChangeSupport
用法遵循JavaBeans PropertyChangeSupport
规范中规定的规则和建议:
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
实例是线程安全的。
这个类是可序列化的。 当它被序列化时,它将保存(并恢复)任何本身可序列化的监听器。 序列化过程中将跳过任何不可序列化的侦听器。
Public constructors |
|
---|---|
PropertyChangeSupport(Object sourceBean) 构造一个 |
Public methods |
|
---|---|
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(String propertyName, Object oldValue, Object newValue) 向已注册的侦听器报告绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。 |
void |
firePropertyChange(PropertyChangeEvent event) 将属性更改事件触发到已注册的侦听器,以跟踪所有属性或具有指定名称的属性的更新。 |
void |
firePropertyChange(String propertyName, int oldValue, int newValue) 向已注册的侦听器报告整数绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。 |
void |
firePropertyChange(String propertyName, boolean oldValue, boolean newValue) 向已注册的侦听器报告布尔绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。 |
PropertyChangeListener[] |
getPropertyChangeListeners(String propertyName) 返回与已命名属性关联的所有侦听器的数组。 |
PropertyChangeListener[] |
getPropertyChangeListeners() 返回通过addPropertyChangeListener()添加到PropertyChangeSupport对象的所有侦听器的数组。 |
boolean |
hasListeners(String propertyName) 检查是否有任何特定属性的侦听器,包括在所有属性上注册的那些侦听器。 |
void |
removePropertyChangeListener(String propertyName, PropertyChangeListener listener) 为特定属性移除PropertyChangeListener。 |
void |
removePropertyChangeListener(PropertyChangeListener listener) 从监听器列表中移除一个PropertyChangeListener。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
PropertyChangeSupport (Object sourceBean)
构造一个 PropertyChangeSupport
对象。
Parameters | |
---|---|
sourceBean |
Object : The bean to be given as the source for any events. |
void addPropertyChangeListener (PropertyChangeListener listener)
将一个PropertyChangeListener添加到侦听器列表。 监听器已注册所有属性。 同一个侦听器对象可以被添加多次,并且会在添加它时多次调用。 如果listener
为空,则不会引发异常并且不采取任何操作。
Parameters | |
---|---|
listener |
PropertyChangeListener : The PropertyChangeListener to be added |
void addPropertyChangeListener (String propertyName, PropertyChangeListener listener)
为特定属性添加PropertyChangeListener。 只有在firePropertyChange上的调用命名该特定属性时才会调用侦听器。 同一个侦听器对象可能会多次添加。 对于每个属性,侦听器将被调用它为该属性添加的次数。 如果propertyName
或listener
为空,则不会引发异常并且不采取任何操作。
Parameters | |
---|---|
propertyName |
String : The name of the property to listen on. |
listener |
PropertyChangeListener : The PropertyChangeListener to be added |
void fireIndexedPropertyChange (String propertyName, int index, boolean oldValue, boolean newValue)
向已经注册的侦听器报告布尔绑定索引属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等,则不会触发事件。
这仅仅是一个更方便的包装方法 fireIndexedPropertyChange(String, int, Object, Object)
方法。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
index |
int : the index of the property element that was changed |
oldValue |
boolean : the old value of the property |
newValue |
boolean : the new value of the property |
void fireIndexedPropertyChange (String propertyName, int index, int oldValue, int newValue)
向已注册的侦听器报告整数绑定索引属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等,则不会触发事件。
这仅仅是一个更为普遍的 fireIndexedPropertyChange(String, int, Object, Object)
方法的简便包装。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
index |
int : the index of the property element that was changed |
oldValue |
int : the old value of the property |
newValue |
int : the new value of the property |
void fireIndexedPropertyChange (String propertyName, int index, Object oldValue, Object newValue)
向已注册的侦听器报告绑定索引属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等且非空,则不会触发任何事件。
这仅仅是一个更普遍的方法 firePropertyChange(PropertyChangeEvent)
方便包装。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
index |
int : the index of the property element that was changed |
oldValue |
Object : the old value of the property |
newValue |
Object : the new value of the property |
void firePropertyChange (String propertyName, Object oldValue, Object newValue)
向已注册的侦听器报告绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等且非空,则不会触发任何事件。
这仅仅是一个更方便的包装方法 firePropertyChange(PropertyChangeEvent)
方法。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
oldValue |
Object : the old value of the property |
newValue |
Object : the new value of the property |
void firePropertyChange (PropertyChangeEvent event)
将属性更改事件触发到已注册的侦听器,以跟踪所有属性或具有指定名称的属性的更新。
如果给定事件的旧值和新值相等且非空,则不会触发事件。
Parameters | |
---|---|
event |
PropertyChangeEvent : the PropertyChangeEvent to be fired |
void firePropertyChange (String propertyName, int oldValue, int newValue)
向已注册的侦听器报告整数绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等,则不会触发事件。
这仅仅是一个更方便的包装方法 firePropertyChange(String, Object, Object)
方法。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
oldValue |
int : the old value of the property |
newValue |
int : the new value of the property |
void firePropertyChange (String propertyName, boolean oldValue, boolean newValue)
向已注册的侦听器报告布尔绑定属性更新,以跟踪所有属性或具有指定名称的属性的更新。
如果旧值和新值相等,则不会触发事件。
这仅仅是一个更方便的包装方法 firePropertyChange(String, Object, Object)
方法。
Parameters | |
---|---|
propertyName |
String : the programmatic name of the property that was changed |
oldValue |
boolean : the old value of the property |
newValue |
boolean : the new value of the property |
PropertyChangeListener[] getPropertyChangeListeners (String propertyName)
返回与已命名属性关联的所有侦听器的数组。
Parameters | |
---|---|
propertyName |
String : The name of the property being listened to |
Returns | |
---|---|
PropertyChangeListener[] |
all of the PropertyChangeListeners associated with the named property. If no such listeners have been added, or if propertyName is null, an empty array is returned. |
PropertyChangeListener[] getPropertyChangeListeners ()
返回通过addPropertyChangeListener()添加到PropertyChangeSupport对象的所有侦听器的数组。
如果某些侦听器已添加了命名属性,则返回的数组将是PropertyChangeListeners和PropertyChangeListenerProxy
的混合。 如果调用方法有兴趣区分侦听器,那么它必须测试每个元素以查看它是否为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" } } }
Returns | |
---|---|
PropertyChangeListener[] |
all of the PropertyChangeListeners added or an empty array if no listeners have been added |
也可以看看:
boolean hasListeners (String propertyName)
检查是否有任何特定属性的侦听器,包括在所有属性上注册的那些侦听器。 如果propertyName
为空,则仅检查在所有属性上注册的侦听器。
Parameters | |
---|---|
propertyName |
String : the property name. |
Returns | |
---|---|
boolean |
true if there are one or more listeners for the given property |
void removePropertyChangeListener (String propertyName, PropertyChangeListener listener)
为特定属性移除PropertyChangeListener。 如果listener
添加到指定属性的相同事件源中,它将在删除后少一次通知。 如果propertyName
为空,则不会引发异常并且不执行任何操作。 如果listener
为空,或者从未为指定属性添加,则不会引发异常并且不采取任何操作。
Parameters | |
---|---|
propertyName |
String : The name of the property that was listened on. |
listener |
PropertyChangeListener : The PropertyChangeListener to be removed |
void removePropertyChangeListener (PropertyChangeListener listener)
从监听器列表中移除一个PropertyChangeListener。 这将删除已为所有属性注册的PropertyChangeListener。 如果listener
被listener
添加到相同的事件源中,它将在删除后少一次通知。 如果listener
为空或者从不添加,则不会引发异常并且不执行任何操作。
Parameters | |
---|---|
listener |
PropertyChangeListener : The PropertyChangeListener to be removed |