如何在JList模型中注册更改?

时间:2011-10-27 23:55:40

标签: java swing listener jlist defaultlistmodel

我在理解哪个界面需要监听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.

“过于复杂”是什么意思?并通过“以前的方法表征”?那么,整个事情意味着什么?这是我想要的界面吗?

2 个答案:

答案 0 :(得分:3)

ListModel将事件分派给其ListDataListener个侦听器。在可能的情况下,列表模型更有效地调用详细的intervalAddedintervalRemoved方法。列表模型的监听器(在本例中为JList)可以使用这些详细的更改来对可视组件进行最小的更改(即,对于intervalAdded,它只需添加新行而不是重新绘制整个清单)。

但是,某些更改可能过于复杂,无法添加和删除。在这种情况下,列表模型可以选择调用contentsChanged。当JList看到contentsChanged时,它很可能会从列表模型中重新获取整个列表。

答案 1 :(得分:2)

是的,那是正确的倾听者。

该陈述意味着此方法更为通用,将涵盖列表内容的每个可能的更改。当这些特定事件发生时,应使用其他(intervalAddedintervalRemoved)。

在我的练习中,你总是会使用最普通的一个(即使是表听众)。我猜它应该用于优化(尤其是大型列表)。

可以找到有关此侦听器的教程here