刚刚学习javabeans的知识,下面来写写PropetyChangeSupport类的使用
PropetyChangeSupport类是java.beans 包里的一个类,它的声明如下:
public class PropertyChangeSupportextends Objectimplements Serializable
这是一个实用工具类,支持绑定 (bound) 属性的 bean 可以使用该类。可以使用此类的实例作为 bean 的成员字段,并将各种工作委托给它。 此类是可序列化的。在对它进行序列化时,它将保存(并恢复)本身可序列化的所有侦听器。在序列化期间,将跳过所有不可序列化的侦听器。
用法
当写一个javabean类的时候,想给类里的一个属性绑定一个事件,监听属性的变化的时候,就可以将这个功能交给
PropertyChangeSupport类的一个实例来管理。举一个例子:
我们来写一个bean类
public class MyBean{
private String name = "caoms";
private PropetyChangeSupport support;//引入一个PropetyChangeSupport的实例
public void setName(String newname){
String oldname = this.name;
this.name = newname;
support
.firePropertyChange(
"name"
, oldname, newname);
<?XML:NAMESPACE PREFIX = O />
}
public String getName(){
return name;
}
public void
addPropertyChangeListener(PropertyChangeListener listener) {
support
.addPropertyChangeListener(listener);
}
public voif
removePropertyChangeListener(PropertyChangeListener listener) {
support
.removePropertyChangeListener(listener);
}
}
说明:
上面的bean类跟一股的bean没有什么本质上的区别,只是在bean中添加了一个PropetyChangeSupport类的实例,来管理bean中的name属性的变化。当在以后bean是使用过程中,当setName方法被调用时,name属性就会发生变化,从而set方法中的
firePropertyChange
方法也会被调用,来激发
PropertyChange
方法。注意propertyChange(PropertyChangeEvent e)方法是实现PropertyChangeListener接口的唯一方法,如果一个类要实现PropertyChangeListener接口,就要实现propertyChange方法,该方法能捕捉firePropertyChange方发报告的事件,即属性发生变化事件。firePropertyChange方法中传递的oldname和newname是属性类旧值和新值,可以通过propertyChange方法中参数PropertyChangeEvent类的getOldValue()和getNewValue()来获得,然后我们可以在这个方法中,添加自己想实现的一些功能了。
下面我们可以写一个应用上面的类了例子
public class UseMybean impleaments PropertyChangeListener
{
public static void main(String [] args)
{
private Mybean bean = new Mybean();
bean.setName("cmshung");
System.out.println("打印我的名字:"+bean.getName())
}
public
void
propertyChange(PropertyChangeEvent e)
{
if
(e.getSource() ==
bean
)
{
System.out.println("旧的名字:"+
e.getOldValue().toString());
System.out.println("新的名字:"
e+.getNewValue().toString());
}
}
}
这个例子在控制台中将输出:打印我的名字:cmshung;
旧的名字:caoms
新的名字:cmshung;
转载于:https://blog.51cto.com/caoms/123058