我有一个包含默认列表模型的主JFrame的应用程序。我希望如果我修改这些记录上的内容,第二个正在运行的应用程序会自动更新。
到目前为止,我有一个MainController类,它实现了侦听器并覆盖了更新方法:
public class MainController implements ActionListener, Observer {
public void update(Observable o, Object o1) {}
}
和一个扩展Observable的简单类
public class Comanda extends Observable{}
我的问题是,如果我从第一个应用程序中删除一个记录,则第二个列表不会更新。程序正在从文本文件中删除记录,但不更新默认列表模型。编辑或添加也存在同样的问题。
我尝试在更新方法中添加“reloadList()”,但这不起作用。想法?
答案 0 :(得分:25)
您是否在addObserver
上致电Comanda
并将MainController
添加为Observer
?此外,如果您发生更改,请致电setChanged
和notifyObservers
?
查看您发布的代码,我可以看到您没有将Observer
和Observable
个对象连接在一起。正如我所说,你必须在你的addObserver
对象上调用Observable
,然后在你的Observable
对象中,每当做出更改时,你需要调用setChanged
然后{{1 }}。只有在调用notifyObservers
时,才会调用已添加的notifyObservers
个update
方法。
您在问题中说过,当您删除一条记录时,列表不会更新,这使我认为Observer
可能不是Comanda
您希望的Object
Observe
。保存List
个记录的任何对象都应该是Observable
。
有关Observer / Observable模式的更多信息,请查看this。
答案 1 :(得分:2)
您要尝试的是“进程间通信” - 将数据从一个应用程序发送到另一个应用程序。有各种方法可以做到这一点; Google搜索会为您提供更多信息。 Observable
仅适用于单个应用程序。