当我编辑列表中对象的数量并且 toString 更改时,如何使用新的 toString 更新列表?
例如,当我更改 JTree 中的节点时,我使用 nodeChanged(node) 更改列表项时该怎么办?
最佳答案
AbstractListModel#fireContentsChanged
如果您从 AbstractListModel
扩展。
这与您上一个问题的JTree
原理相同。 AbstractListModel
不知道对象的某些内部属性何时发生更改。因此,当您进行更改时,您必须调用指示对象已更改的特定方法。列表模型将触发 JList
接收到的正确事件,该事件将更新/重新绘制(无论您想如何调用它)。
我个人更喜欢创建独立的ListModel
,例如如果您使用触发事件的对象在更改 ListModel
时可以监听这些更改并触发适当的事件本身,而不必在外部调用此方法。
编辑
刚刚注意到该特定方法受到保护,因此您需要按照我的建议创建模型,并且不能在外部调用该方法(这是一件好事)
关于java - 强制更新 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194042/