Java 如何在JList车型中注册变更?

Java 如何在JList车型中注册变更?,java,swing,listener,jlist,defaultlistmodel,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.

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

“太复杂”是什么意思?通过“用以前的方法来描述”呢?那么,整件事是什么意思?这就是我想要的界面吗?

是的,这就是正确的侦听器

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

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


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

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


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

我是否还需要在模型中放置火灾事件?如果是,在哪里?谢谢