我在理解哪个界面需要监听listModel中的更改时遇到问题。我以为是ListDataListener,但我无法理解其中的方法。它有3种方法,这个方法似乎是我想要的方法,但我无法理解描述:
contentsChanged(ListDataEvent e)
Sent when the contents of the list has changed in a way that's too complex to characterize with the previous methods.
“过于复杂”是什么意思?并通过“以前的方法表征”?那么,整个事情意味着什么?这是我想要的界面吗?
答案 0 :(得分:3)
ListModel
将事件分派给其ListDataListener
个侦听器。在可能的情况下,列表模型更有效地调用详细的intervalAdded
和intervalRemoved
方法。列表模型的监听器(在本例中为JList
)可以使用这些详细的更改来对可视组件进行最小的更改(即,对于intervalAdded
,它只需添加新行而不是重新绘制整个清单)。
但是,某些更改可能过于复杂,无法添加和删除。在这种情况下,列表模型可以选择调用contentsChanged
。当JList
看到contentsChanged
时,它很可能会从列表模型中重新获取整个列表。
答案 1 :(得分:2)
是的,那是正确的倾听者。
该陈述意味着此方法更为通用,将涵盖列表内容的每个可能的更改。当这些特定事件发生时,应使用其他(intervalAdded
和intervalRemoved
)。
在我的练习中,你总是会使用最普通的一个(即使是表听众)。我猜它应该用于优化(尤其是大型列表)。
可以找到有关此侦听器的教程here。