当我编辑列表中对象的数量并且toString发生更改时,如何使用新的toString更新列表?
示例,当我更改JTree中的节点时,我使用nodeChanged(节点)当我更改列表项时该怎么办?
答案 0 :(得分:5)
AbstractListModel
延伸,请 AbstractListModel#fireContentsChanged
。
这与您之前提问的JTree
的原理相同。 AbstractListModel
不知道对象的某些内部属性何时更改。因此,当您进行更改时,必须调用指示对象已更改的特定方法。列表模型将触发JList
收到的正确事件,该事件将更新/重新绘制(无论您想要调用它)。
我个人更喜欢创建自包含的ListModel
,例如如果您使用的对象在更改ListModel
时触发事件,则可以侦听这些更改并自行触发相应的事件,而不必在外部调用此方法。
修改的
注意到该特定方法受到保护,因此您需要按照我的建议创建模型,并且不能在外部调用该方法(这是一件好事)
答案 1 :(得分:0)
List.updateUI()会这样做,虽然我被告知这有一些开销。