当我编辑列表中对象的数量并且 toString 发生更改时,如何使用新的 toString 更新列表?
例如,当我更改 JTree 中的节点时,我使用 nodeChanged(node) 更改列表项时该怎么办?
AbstractListModel#fireContentsChanged
如果你从AbstractListModel
.
这与您上一个问题的原理相同JTree
。AbstractListModel
不知道您的对象的某些内部属性何时更改。因此,当您进行更改时,您必须调用指示对象已更改的特定方法。列表模型将触发 接收到的正确事件,该事件JList
将更新/重绘(无论您想如何称呼它)。
就我个人而言,我更喜欢创建ListModel
自包含的 s,例如,如果您在更改时使用触发事件的对象ListModel
可以侦听这些更改并触发适当的事件本身,而不必在外部调用此方法。
编辑
刚刚注意到该特定方法受到保护,因此您需要按照我的建议创建模型,并且您不能在外部调用该方法(这是一件好事)
List.updateUI() 会这样做,尽管有人告诉我这有一些开销。