Most visited

Recently visited

Added in API level 3

PropertyChangeSupport

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实例是线程安全的。

这个类是可序列化的。 当它被序列化时,它将保存(并恢复)任何本身可序列化的监听器。 序列化过程中将跳过任何不可序列化的侦听器。

也可以看看:

Summary

Public constructors

PropertyChangeSupport(Object sourceBean)

构造一个 PropertyChangeSupport对象。

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

Public constructors

PropertyChangeSupport

Added in API level 3
PropertyChangeSupport (Object sourceBean)

构造一个 PropertyChangeSupport对象。

Parameters
sourceBean Object: The bean to be given as the source for any events.

Public methods

addPropertyChangeListener

Added in API level 3
void addPropertyChangeListener (PropertyChangeListener listener)

将一个PropertyChangeListener添加到侦听器列表。 监听器已注册所有属性。 同一个侦听器对象可以被添加多次,并且会在添加它时多次调用。 如果listener为空,则不会引发异常并且不采取任何操作。

Parameters
listener PropertyChangeListener: The PropertyChangeListener to be added

addPropertyChangeListener

Added in API level 3
void addPropertyChangeListener (String propertyName, 
                PropertyChangeListener listener)

为特定属性添加PropertyChangeListener。 只有在firePropertyChange上的调用命名该特定属性时才会调用侦听器。 同一个侦听器对象可能会多次添加。 对于每个属性,侦听器将被调用它为该属性添加的次数。 如果propertyNamelistener为空,则不会引发异常并且不采取任何操作。

Parameters
propertyName String: The name of the property to listen on.
listener PropertyChangeListener: The PropertyChangeListener to be added

fireIndexedPropertyChange

Added in API level 3
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

fireIndexedPropertyChange

Added in API level 3
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

fireIndexedPropertyChange

Added in API level 3
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

firePropertyChange

Added in API level 3
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

firePropertyChange

Added in API level 3
void firePropertyChange (PropertyChangeEvent event)

将属性更改事件触发到已注册的侦听器,以跟踪所有属性或具有指定名称的属性的更新。

如果给定事件的旧值和新值相等且非空,则不会触发事件。

Parameters
event PropertyChangeEvent: the PropertyChangeEvent to be fired

firePropertyChange

Added in API level 3
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

firePropertyChange

Added in API level 3
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

getPropertyChangeListeners

Added in API level 3
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.

getPropertyChangeListeners

Added in API level 3
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

也可以看看:

hasListeners

Added in API level 3
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

removePropertyChangeListener

Added in API level 3
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

removePropertyChangeListener

Added in API level 3
void removePropertyChangeListener (PropertyChangeListener listener)

从监听器列表中移除一个PropertyChangeListener。 这将删除已为所有属性注册的PropertyChangeListener。 如果listenerlistener添加到相同的事件源中,它将在删除后少一次通知。 如果listener为空或者从不添加,则不会引发异常并且不执行任何操作。

Parameters
listener PropertyChangeListener: The PropertyChangeListener to be removed

Hooray!