我在理解我需要在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.
"太复杂"是什么意思?那么"用以前的方法来表征"呢?这整件事是什么意思?这是我想要的界面吗?
ListModel
向其ListDataListener
侦听器发送事件。在可能的情况下,列表模型调用详细的intervalAdded
和intervalRemoved
方法更为有效。列表模型的监听器(在本例中是JList
)可以使用这些详细的更改来对可视化组件进行最小的更改(即,对于intervalAdded
,它可以只添加新行而不是重新绘制整个列表)。
然而,有些更改可能太复杂,不能仅仅用添加和删除来描述。在这种情况下,列表模型可以选择调用contentsChanged
。当JList
看到contentsChanged
时,它很可能会从列表模型中重新获取整个列表。
是的,这就是正确的听众。
该语句意味着此方法是更通用的方法,它将涵盖对列表内容的所有可能更改。其他两个(intervalAdded
和intervalRemoved
)应该在这些特定事件发生时使用。
在我的实践中,您将始终使用最通用的一个(即使是表侦听器)..我猜它应该是用来优化的(尤其是大列表)。
关于这个监听器的教程可以在这里找到