- 所有已实现的接口:
-
Serializable
- 直接已知的子类:
-
SwingPropertyChangeSupport
PropertyChangeEvent 分派给它们。您可以将此类的实例用作bean的成员字段,并将这些类型的工作委托给它。可以为所有属性或按名称指定的属性注册 PropertyChangeListener。
以下是遵循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 实例是线程安全的。
此类可序列化。在序列化时,它将保存(并恢复)那些本身可序列化的任何监听器。任何不可序列化的监听器在序列化期间将被跳过。
- 自版本:
- 1.1
- 参见:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid向监听器列表添加一个 PropertyChangeListener。voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) 为特定属性添加一个 PropertyChangeListener。voidfireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个布尔绑定索引属性更新。voidfireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个整数绑定索引属性更新。voidfireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个绑定索引属性更新。void向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个属性更改事件。voidfirePropertyChange(String propertyName, boolean oldValue, boolean newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个布尔绑定属性更新。voidfirePropertyChange(String propertyName, int oldValue, int newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个整数绑定属性更新。voidfirePropertyChange(String propertyName, Object oldValue, Object newValue) 向已注册以跟踪所有属性更新或具有指定名称的属性的监听器报告一个绑定属性更新。返回添加到 PropertyChangeSupport 对象的所有监听器的数组。getPropertyChangeListeners(String propertyName) 返回与指定名称的属性关联的所有监听器的数组。booleanhasListeners(String propertyName) 检查是否有任何特定属性的监听器,包括那些在所有属性上注册的监听器。void从监听器列表中移除一个 PropertyChangeListener。voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) 为特定属性移除一个 PropertyChangeListener。
-
Constructor Details
-
PropertyChangeSupport
构造一个PropertyChangeSupport对象。- 参数:
-
sourceBean- 作为任何事件源的源的 bean。
-
-
Method Details
-
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 是一个与名为 "foo" 的属性关联的 PropertyChangeListener } } }- 返回:
-
所有已添加的
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为 null,则返回一个空数组。 - 自版本:
- 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- 属性名称。 - 返回:
- 如果给定属性有一个或多个侦听器,则为true
- 自版本:
- 1.2
-