强制更新JList

时间:2012-04-17 15:18:48

标签: java swing jlist

当我编辑列表中对象的数量并且toString发生更改时,如何使用新的toString更新列表?

示例,当我更改JTree中的节点时,我使用nodeChanged(节点)当我更改列表项时该怎么办?

2 个答案:

答案 0 :(得分:5)

如果您从AbstractListModel延伸,请

AbstractListModel#fireContentsChanged

这与您之前提问的JTree的原理相同。 AbstractListModel不知道对象的某些内部属性何时更改。因此,当您进行更改时,必须调用指示对象已更改的特定方法。列表模型将触发JList收到的正确事件,该事件将更新/重新绘制(无论您想要调用它)。

我个人更喜欢创建自包含的ListModel,例如如果您使用的对象在更改ListModel时触发事件,则可以侦听这些更改并自行触发相应的事件,而不必在外部调用此方法。

修改

注意到该特定方法受到保护,因此您需要按照我的建议创建模型,并且不能在外部调用该方法(这是一件好事)

答案 1 :(得分:0)

List.updateUI()会这样做,虽然我被告知这有一些开销。