Java Reference
In-Depth Information
beans must be of the
same type
as that of the bound property. The relevant classes
to achieve this linkage are contained within package
java.beans
. The objects to be
notifi ed are registered as
PropertyChangeListener
s. A
PropertyChangeSupport
object maintains a list of these listeners. The constructor for this object takes one
argument: the source bean. For example:
PropertyChangeSupport changeSupport =
new PropertyChangeSupport(this);
In this example, the
PropertyChangeSupport
object has been created within the
source bean itself.
The
PropertyChangeSupport
object notifi es any registered listeners of a change
in the bound property via method
fi rePropertyChange
, which takes three
arguments:
a
String
, identifying the bound property;
an
Object
, identifying the old value;
an
Object
, identifying the new value.
Since the second and third arguments must be of type
Object
or a subclass of this
(i.e., an object of
any
class), any primitive value must be converted into an object by
the appropriate 'wrapper' class (
Integer
,
Float
, etc.). For example:
changeSupport.fi rePropertyChange(
"boundProp",new Integer(oldVal),new Integer(newVal));
Execution of the above method causes
PropertyChangeEvent
objects to be
generated automatically (and transparently).
The changes in the source bean required to achieve all this are summarised in the
steps below.
1. Add the line :
import java.beans.*;
2. Create a
PropertyChangeSupport
object, using
this
as the single argument to the
constructor.
3. Defi ne methods
addPropertyChangeListener
and
removePropertyChange-
Listener
, specifying a
PropertyChangeListener
argument and
void
return type.
(Defi nitions of the above methods simply call up the corresponding methods of
the
PropertyChangeSupport
object, passing a listener argument.)
4. Extend the 'set' method for the bound property to call method
fi rePropertyChange
.
Example
This is a further extension of our animation bean, using
imageName
as the bound
property. The code changes are shown in bold text below.
package animBeans;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
Search WWH ::
Custom Search