PropertyChangeSupport

public class PropertyChangeSupport extends Object
implements Serializable

This is a utility class that can be used by beans that support bound properties. It manages a list of listeners and dispatches PropertyChangeEvents to them. You can use an instance of this class as a member field of your bean and delegate these types of work to it. The PropertyChangeListener can be registered for all properties or for a property specified by name.

Here is an example of PropertyChangeSupport usage that follows the rules and recommendations laid out in the JavaBeans™ specification:

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

     [...]
 }
 

A PropertyChangeSupport instance is thread-safe.

This class is serializable. When it is serialized it will save (and restore) any listeners that are themselves serializable. Any non-serializable listeners will be skipped during serialization.

Public Constructor Summary

PropertyChangeSupport(Object sourceBean)
Constructs a PropertyChangeSupport object.

Public Method Summary

void
addPropertyChangeListener(PropertyChangeListener listener)
Add a PropertyChangeListener to the listener list.
void
addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
Add a PropertyChangeListener for a specific property.
void
fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
Reports a boolean bound indexed property update to listeners that have been registered to track updates of all properties or a property with the specified name.
void
fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
Reports an integer bound indexed property update to listeners that have been registered to track updates of all properties or a property with the specified name.
void
fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
Reports a bound indexed property update to listeners that have been registered to track updates of all properties or a property with the specified name.
void
firePropertyChange(String propertyName, Object oldValue, Object newValue)
Reports a bound property update to listeners that have been registered to track updates of all properties or a property with the specified name.
void
firePropertyChange(PropertyChangeEvent event)
Fires a property change event to listeners that have been registered to track updates of all properties or a property with the specified name.
void
firePropertyChange(String propertyName, int oldValue, int newValue)
Reports an integer bound property update to listeners that have been registered to track updates of all properties or a property with the specified name.
void
firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
Reports a boolean bound property update to listeners that have been registered to track updates of all properties or a property with the specified name.
PropertyChangeListener[]
getPropertyChangeListeners(String propertyName)
Returns an array of all the listeners which have been associated with the named property.
PropertyChangeListener[]
getPropertyChangeListeners()
Returns an array of all the listeners that were added to the PropertyChangeSupport object with addPropertyChangeListener().
boolean
hasListeners(String propertyName)
Check if there are any listeners for a specific property, including those registered on all properties.
void
removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
Remove a PropertyChangeListener for a specific property.
void
removePropertyChangeListener(PropertyChangeListener listener)
Remove a PropertyChangeListener from the listener list.

Inherited Method Summary

Public Constructors

public PropertyChangeSupport (Object sourceBean)

Constructs a PropertyChangeSupport object.

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

Public Methods

public void addPropertyChangeListener (PropertyChangeListener listener)

Add a PropertyChangeListener to the listener list. The listener is registered for all properties. The same listener object may be added more than once, and will be called as many times as it is added. If listener is null, no exception is thrown and no action is taken.

Parameters
listener The PropertyChangeListener to be added

public void addPropertyChangeListener (String propertyName, PropertyChangeListener listener)

Add a PropertyChangeListener for a specific property. The listener will be invoked only when a call on firePropertyChange names that specific property. The same listener object may be added more than once. For each property, the listener will be invoked the number of times it was added for that property. If propertyName or listener is null, no exception is thrown and no action is taken.

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

public void fireIndexedPropertyChange (String propertyName, int index, boolean oldValue, boolean newValue)