2013-11-04 111 views
0

程序运行时我将如何更新JList?我正在从另一个课程导入一个ArrayList,并将其放入列表中。当用户添加一些东西到数组列表中时,它会出现在屏幕上的列表中。在运行时更新JList

回答

3

包裹ArrayList在某种0​​,通过使用JList#setModel

改变JList的模型中看到How to use Lists更多细节

你可以使用一个DefaultListModel,无论您何时更新ArrayList,你需要更新DefaultListModel,但使用类似add(int, E),addElement(E),remove(int),removeElement(Object)removeAllElements根据您的需要。

这将自动更改通知JList向更新模型

取得

一个更复杂的方法可能是使用代理模式,其中由您创造一个ArrayList代理提供的信息关于什么时候改变,哪些可以反映在自动模型中。这假设您正在导入ArrayList的课程向您的课堂要求ArrayList的一个实例。

这种方式,您可以监视addsetremove方法和更改自动ListModel ...

+0

你甚至都不需要使用'setModel',你可以只改变模型。 –

+0

@SimonAndréForsberg这将取决于您是否要从原始列表中删除元素。这也取决于你是否想要合并这两个列表。个人而言,可以更快地创建一个新列表。但没有足够的信息来说某种方式或其他... – MadProgrammer

+0

*“但没有足够的信息来说一种方式或其他..”*从OP编辑)*“当用户添加一些东西到数组列表它会出现在在屏幕上的列表。“*似乎非常明确的方式。不知道这是一个正确的interpritation? - 我正在考虑[[DefaultListModel]](http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html),使用['addElement()']( http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html#addElement%28E%29)..(这里最好) –