是否有任何现有的类可帮助支持添加/删除EventListener操作? (有点像PropertyChangeSupport)

我正在尝试将我的代码划分为模型并在Java中进行查看。我有一些不稳定的数据,并且希望模型支持某种EventListener,以便 View 可以订阅模型中的更改。数据非常复杂,以至于我不想做全部细粒度的Javabeans属性更改支持。相反,我只想允许通知模型已粗略更改。

我怎样才能最好地做到这一点?

最佳答案

我会用ChangeEvent来处理。这只是表明情况已发生变化。

至于实现添加/删除/触发功能。没有像PropertyChangeSupport这样的机制,但是代码很简单,实际上并不需要它。

private final EventListenerList listenerList = new EventListenerList();
private final ChangeEvent stateChangeEvent = new ChangeEvent(this);

public void addChangeListener(ChangeListener l) {
    listenerList.add(ChangeListener.class, l);
}
public void removeChangeListener(ChangeListener l) {
    listenerList.remove(ChangeListener.class, l);
}
protected void fireChange() {
    for (ChangeListener l: listenerList.getListeners(ChangeListener.class)) {
        l.stateChanged(stateChangeEvent);
    }
}

注意:JComponent提供了一个 protected listenerList对象,供子类使用。

10-01 01:53