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) |
|
|---|---|
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 |