Java Observer和Observable在应用程序之间无法正常工作

时间:2012-01-16 00:12:17

标签: java observer-pattern observable

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

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

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

和一个扩展Observable的简单类

public class Comanda extends Observable{}

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

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

2 个答案:

答案 0 :(得分:25)

您是否在addObserver上致电Comanda并将MainController添加为Observer?此外,如果您发生更改,请致电setChangednotifyObservers

查看您发布的代码,我可以看到您没有将ObserverObservable个对象连接在一起。正如我所说,你必须在你的addObserver对象上调用Observable,然后在你的Observable对象中,每当做出更改时,你需要调用setChanged然后{{1 }}。只有在调用notifyObservers时,才会调用已添加的notifyObserversupdate方法。

您在问题中说过,当您删除一条记录时,列表不会更新,这使我认为Observer可能不是Comanda您希望的Object Observe。保存List个记录的任何对象都应该是Observable

有关Observer / Observable模式的更多信息,请查看this

答案 1 :(得分:2)

您要尝试的是“进程间通信” - 将数据从一个应用程序发送到另一个应用程序。有各种方法可以做到这一点; Google搜索会为您提供更多信息。 Observable仅适用于单个应用程序。