我需要处理2个类之间的更改交互。
public class HeadClass {
private Subclass sub;
public void refresh() {...}
}
public class Subclass{
ArrayList store;
public void add(T data)
store.add(data);
firePropertyChange(...);
}
每当在子类中调用方法“add”时,应在HeadClass中调用方法“refresh”!
但是我应该在哪个类中实现这一行:
private PropertyChangeSupport changes = new PropertyChangeSupport(/*WHAT SHOULD BE HERE?*/);
如果我在HeadClass中实现它,我可以这样反应:
changes.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
refresh();
}
});
但是,如果我无法访问propertyChangeSupport“changes”,该如何从子类中触发propertyChangeEvents?
最佳答案
子类获得PropertyChangeSupport,以及添加和删除PropertyChangeListener的方法。您可以将this
传递到SubClass的PropertyChangeSupport构造函数中。
public class Subclass{
private PropertyChangeSupport propChangeSupport =
new PropertyChangeSupport(this);
private ArrayList store;
public void addPropertyChangeListener(PropertyChangeListener listener) {
propChangeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propChangeSupport.removePropertyChangeListener(listener);
}
public void add(T data)
store.add(data);
propChangeSupport.firePropertyChange(...);
}
}
关键始终是什么类需要监听其状态?由于这是SubClass,因此它需要持有属性更改支持。执行侦听的类是将侦听器添加到支持的类。