我需要处理两个类之间的更改交互。
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“更改”,我应该如何从子类触发 propertyChangeEvents?
子类获取 PropertyChangeSupport,以及添加和删除 PropertyChangeListener 的方法。你会通过this
进入子类的 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(...);
}
}
关键始终是哪个类需要监听其状态?既然那是子类,那么它需要持有属性更改支持。执行监听的类是将监听器添加到支持中的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)