如何确保Swing GUI与可能随时更改的底层数据结构保持同步?
让我们假设我们有一个在任何时间点都可以修改的数据结构,现在我希望显示数据结构内容的GUI能够自动反映这些更改。如何使它们保持同步?
我试图在这里使用HashMap来实现一个联系人簿来存储联系人。GUI显示通讯录的内容。
在类ContactBook中,我有映射以及添加或删除条目的方法。
GUI最初从通讯录加载内容。但是当hashMap被修改时,我希望GUI被更新。
- 为您的模型ContactBook类提供一个用
this
初始化的SwingPropertyChangeSupport对象 - 为同一类提供add和remove PropertyChangeListener方法,这些方法将侦听器传递给支持对象
- 在ContactBook的任何更改数据的方法中,都可以通过激发支持对象来通知侦听器
- 让GUI向模型中添加PropertyChangeListener,使其能够响应通知
例如:
- 通过不同的线程访问变量和回转组件
- 内部类的射击事件,扩展SwingWorker
感谢大家的回答和建议,我继续使用Guava EventBus通知GUI进行更新。