Swing里面用的多啊。
在网上找个Demo弄上来:
import java.beans.PropertyChangeSupport;
public class EventManager {
PropertyChangeSupport PCS = new PropertyChangeSupport(this);
// add listener
public void addPropertyChangeListener(PropertyChangeListener pcl) {
PCS.addPropertyChangeListener(pcl);
}
// Trigger property change events
protected void triggerPropertyChange(String propertyName, Object oldValue,
Object newValue) {
PCS.firePropertyChange(propertyName, oldValue, newValue);
}
// remove listener
protected void removeProtertyChange(PropertyChangeListener pcs) {
PCS.removePropertyChangeListener(pcs);
}
}
import java.beans.PropertyChangeListener;
public class ChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
System.out.println(evt.getPropertyName());
System.out.println("NewValue=" + evt.getNewValue());
System.out.println("OldValue=" + evt.getOldValue());
System.out.println(evt.getPropagationId());
System.out.println("-------------------------");
Object bean = evt.getSource();
System.out.println(bean);
}
}
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
int oldValue = this.id;
this.id = id;
triggerPropertyChange("id", oldValue, id);
}
public String getName() {
return name;
}
public void setName(String name) {
String oldValue = this.name;
this.name = name;
triggerPropertyChange("name", oldValue, name);
}
public static void main(String args[]) {
Bean bean = new Bean();
// 把监听器注册到这个bean上
bean.addPropertyChangeListener(new ChangeListener());
bean.setId(1111);
bean.setName("gary");
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return "Bean [id=" + id + ", name=" + name + "]";
}
}