8

我有一个包含默认列表模型的主 JFrame 的应用程序。我希望如果我修改这些记录上的某些内容,第二个正在运行的应用程序会自动更新。

到目前为止,我有一个 MainController 类,它实现了监听器并覆盖了更新方法:

public class MainController implements ActionListener, Observer {
  public void update(Observable o, Object o1) {}
}

和一个扩展 Observable 的简单类

public class Comanda extends Observable{}

我的问题是,如果我从第一个应用程序中删除一条记录,第二个列表不会更新。程序正在从文本文件中删除记录,但不更新默认列表模型。编辑或添加同样的问题。

我尝试在更新方法中添加“reloadList()”,但这不起作用。想法?

4

2 回答 2

27

您是否已调用addObserverComanda添加了MainControlleras Observer?此外,当变化发生时,您打电话给setChangednotifyObservers

查看您发布的代码,我可以看到您没有将ObserverObservable对象连接在一起。正如我所说,您必须调用addObserver您的Observable对象,然后在您的Observable对象中,每当进行更改时,您都需要调用setChangedthen notifyObservers。只有在notifyObservers被调用的时候才会调用update任何Observer已经添加的s的方法。

您在问题中说,当您删除一条记录时,列表不会更新,这让我认为这Comanda可能不是Object您想要的Observe。无论哪个对象拥有List记录,都应该是Observable.

看看这个以获取有关 Observer/Observable 模式的更多信息。

于 2012-01-16T00:21:55.320 回答
2

您尝试做的事情称为“进程间通信”——将数据从一个应用程序发送到另一个应用程序。有多种方法可以做到这一点;谷歌搜索会给你更多的信息。Observable仅适用于单个应用程序。

于 2012-01-16T00:19:15.930 回答