public class PropertyChangeSupport extends Object implements Serializable
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实例是线程安全的。
这个类是可序列化的。 当它被序列化时,它将保存(并恢复)本身可序列化的任何侦听器。 在序列化期间,任何不可序列化的监听器都将被跳过。
VetoableChangeSupport , Serialized Form
| Constructor and Description |
|---|
PropertyChangeSupport(Object sourceBean)
构造一个
PropertyChangeSupport对象。
|
| Modifier and Type | Method and Description |
|---|---|
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。
|
public PropertyChangeSupport(Object sourceBean)
PropertyChangeSupport对象。
sourceBean - 要作为任何事件来源的bean。
public void addPropertyChangeListener(PropertyChangeListener listener)
listener为空,则不会抛出异常并且不采取任何操作。
listener - 要添加的PropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
listener添加到同一个事件源, listener删除后将被通知一次。
如果listener为空,或者从未添加,则不会抛出异常并且不采取任何操作。
listener - 要删除的PropertyChangeListener
public PropertyChangeListener[] getPropertyChangeListeners()
如果一些监听器已经添加了一个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或一个空数组,如果没有添加听众
PropertyChangeListenerProxy
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
propertyName或listener为空,则不会抛出异常并且不采取任何操作。
propertyName - 要收听的属性的名称。
listener - 要添加的PropertyChangeListener
public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
listener添加到指定属性的同一事件源,则在被删除之后将被通知一次。
如果propertyName为空,则不会抛出异常并且不采取任何操作。
如果listener为空,或者从未为指定的属性添加,则不会抛出异常,也不会执行任何操作。
propertyName - 收听的财产的名称。
listener - 要删除的PropertyChangeListener
public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
propertyName - 正在收听的财产的名称
PropertyChangeListeners与指定属性相关联。
如果没有添加这样的侦听器,或者如果propertyName为null,则返回一个空数组。
public void firePropertyChange(String propertyName, Object oldValue, Object newValue)
如果旧值和新值相等且不为空,则不会触发事件。
这只是一个方便的包装器,围绕更一般的firePropertyChange(PropertyChangeEvent)方法。
propertyName - 已更改的属性的编程名称
oldValue - 该物业的旧值
newValue - 该物业的新价值
public void firePropertyChange(String propertyName, int oldValue, int newValue)
如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装围绕更一般的firePropertyChange(String, Object, Object)方法。
propertyName - 已更改的属性的编程名称
oldValue - 该物业的旧值
newValue - 该物业的新价值
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装围绕更一般的firePropertyChange(String, Object, Object)方法。
propertyName - 已更改的属性的编程名称
oldValue - 该物业的旧值
newValue - 该属性的新值
public void firePropertyChange(PropertyChangeEvent event)
如果给定事件的旧值和新值相等且非空值,则不会触发事件。
event - 要解雇的
PropertyChangeEvent
public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
如果旧值和新值相等且不为空,则不会触发事件。
这只是一个方便的包装围绕更一般的firePropertyChange(PropertyChangeEvent)方法。
propertyName - 已更改的属性的编程名称
index - 已更改的属性元素的索引
oldValue - 该物业的旧值
newValue - 该属性的新值
public void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装围绕更一般的fireIndexedPropertyChange(String, int, Object, Object)方法。
propertyName - 已更改的属性的编程名称
index - 已更改的属性元素的索引
oldValue - 该物业的旧值
newValue - 该物业的新值
public void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
如果旧值和新值相等,则不会触发任何事件。
这只是一个方便的包装围绕更一般的fireIndexedPropertyChange(String, int, Object, Object)方法。
propertyName - 已更改的属性的编程名称
index - 已更改的属性元素的索引
oldValue - 该物业的旧值
newValue - 该属性的新值
public boolean hasListeners(String propertyName)
propertyName为null,则只检查在所有属性上注册的侦听器。
propertyName - 属性名称。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.