gpt4 book ai didi

Java观察者删除自身?

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:21 25 4
gpt4 key购买 nike

我有一个从 JFrame 扩展的“A”类,用于显示主菜单(一些按钮)。

我有另一个类“B”,它从 Observable 扩展而来,其中包含项目的数据。

在“A”中我创建了一个对象“B”b。在“A”中,我还有一个按钮,当我单击此按钮时,一个新类“C”也从 JFrame 扩展(并实现了观察者)被创建并可见。

在 A 中,当我单击此按钮时,这个新框架“C”也会通过 b.addObserver(c) 作为观察者添加到“B”;

现在我的问题是:当我关闭新框架“C”时 ->我如何从 A 中的观察者中删除该框架。它可以从该观察者列表中删除自己吗?在互联网上找不到东西:/

谢谢

丹尼尔

最佳答案

Can it remove itself from that 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) {
...
}
}

关于Java观察者删除自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com