我有一个班级" A"从JFrame扩展,用于显示主菜单(一些按钮)。
我还有另一节课" B"从Observable扩展,其中包含项目的数据。
在" A"我创建了一个对象" B"湾 在" A"我也有一个按钮,当我点击这个按钮时,一个新的课程" C"还从JFrame扩展(并实现了一个Observer)创建并可见。
在A中,当我点击此按钮时,也是这个新框架" C"作为观察者添加到" B"与b.addObserver(c);
现在我的问题: 当我关闭新框架" C" - >我如何从A中的观察者中删除此帧。它可以从该Observerlist中删除吗? 无法在互联网上找到一些东西:/
由于
丹尼尔
答案 0 :(得分:1)
它可以从Observerlist中删除吗?
我认为没有必要删除观察者,因为现在观察者永远不会发布任何事件,但仍然可以删除它,如下面的代码所示。
每当您创建ObserverC
对象时,ObservableB
都会通过ObservableB
来观察它。
现在关闭ObserverC
时,只需从ObservableB
注意:阅读内联评论。
示例代码
class JFrameA extends JFrame {
ObservableB b;
public void add() {
ObserverC c = new ObserverC(b);
}
}
class ObservableB extends Observable {
}
class ObserverC extends JFrame implements Observer {
public ObserverC(final Observable observable) {
// observer is added
observable.addObserver(this);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent arg0) {
// observer is deleted
observable.deleteObserver(ObserverC.this);
}
});
}
@Override
public void update(Observable arg0, Object arg1) {
...
}
}