import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Test01
{
private String name;
/*
* 在事件源的地方顶一个一个PropertyChangeSupport对象,间接地由它负责
* 添加监听、激发事件
*/
private PropertyChangeSupport listernts=new PropertyChangeSupport(this);
/**
* 在事件源上添加监听,实际上是在PropertyChangeSupport对象上添加监听
* @param l
*/
public void addListner(PropertyChangeListener l)
{
listernts.addPropertyChangeListener(l);
}
/**
* 同上
* @param l
*/
public void removeListner(PropertyChangeListener l)
{
listernts.removePropertyChangeListener(l);
}
public String getName()
{
return name;
}
/**
* 事件源发生变化时,也是通过PropertyChangeSupport对象把事件发送到监听者上的
* @param name
*/
public void setName(String name)
{
this.name = name;
listernts.firePropertyChange(null,null,getName());
}
}
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class Test03 implements PropertyChangeListener
{
@Override
public void propertyChange(PropertyChangeEvent evt)
{
System.out.println("哈哈,我看见了");
}
public static void main(String args[])
{
Test01 t01=new Test01();
Test03 t02=new Test03();
//在事件源上添加监听,发生变化时就会调用propertyChange方法
t01.addListner(t02);
t01.setName("cxm");
}
}