2013-11-04 157 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)..(這裏最好) –