我有一个包含默认列表模型的主JFrame的应用程序.我希望如果我修改这些记录上的内容,第二个正在运行的应用程序会自动更新.
到目前为止,我有一个MainController类,它实现了监听器并覆盖了更新方法:
public class MainController implements ActionListener,Observer { public void update(Observable o,Object o1) {} }
和一个扩展Observable的简单类
public class Comanda extends Observable{}
我的问题是,如果我从第一个应用程序中删除一个记录,第二个列表不会更新.程序正在从文本文件中删除记录,但不更新默认列表模型.编辑或添加也存在同样的问题.
解决方法
你有没有在Comanda上调用addObserver并将MainController添加为Observer?此外,当您发生更改时,您是否正在调用setChanged和notifyObservers?
查看您发布的代码,我可以看到您没有将Observer和Observable Objects连接在一起.正如我所说,你必须在你的Observable对象上调用addObserver,然后在你的Observable对象中,每当做出改变时你需要调用setChanged然后调用notifyObservers.仅当调用notifyObservers时,才会调用已添加的任何观察者的更新方法.
你在你的问题中说过,当你删除一条记录时,列表不会更新,这让我觉得Comanda可能不是你想要观察的对象.保存记录列表的那个对象应该是Observable.
有关Observer / Observable模式的更多信息,请查看this.