3

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

“太复杂”是什么意思?并通过“用以前的方法表征”?那么,整件事是什么意思?这是我想要的界面吗?

4

2 回答 2

3

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

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

于 2011-10-28T00:22:20.987 回答
2

是的,那是正确的听众。

该声明意味着此方法是更通用的方法,它将涵盖对列表内容的所有可能更改。当这些特定事件发生时,应使用其他的 (intervalAdded和)。intervalRemoved

在我的实践中,您将始终使用最通用的一个(即使使用表侦听器)。我想它应该用于优化(尤其是对于大列表)。

可以在此处找到有关此侦听器的教程。

于 2011-10-28T00:02:55.060 回答