的「幫手」構造列入是爲了使其更容易與簡單的數據結構使用JList
。
JList
(和許多Swing組件)實際上是用於將實際數據提供給視圖的模型。原始設計在Swing被合併到主庫之前(在JDK 1.3之前)並且剛好在集合API被引入之前就回去了,所以原始開發者可能沒有List
可用於他們(因此包括Vector
)。
這可能是因爲沒有人認爲可以更新庫,因爲(部分原因是因爲它可能已被決定,原來的構造函數不應該被包括在內,但我並沒有在該次會議;))
更好/更簡單的解決方案是創建自己的模型,使用List
作爲數據源。
例如...
public class MyListModel<T> extends AbstractListModel<T> {
private List<T> people;
public MyListModel(List<T> people) {
this.people = people;
}
@Override
public int getSize() {
return people.size();
}
@Override
public T getElementAt(int index) {
return people.get(index);
}
}
然後,你可以簡單地把它提供給JList
當過你需要......
JList myList = new JList(new MyListModel<MyObject>(listOfMyObjets));
'「什麼困惑我的是,我爲什麼不能只需像這樣直接將ArrayList添加到Jlist:「'---因爲我們不能只編寫代碼並希望它可以工作。該API會告訴你具體的構造函數和方法。你用得越多,它會變得越有用。 –
如果你真的很煩惱,創建一個'ListModel',它使用'List'作爲它的核心支持數據... – MadProgrammer
另請參見:http://stackoverflow.com/a/3269560/363573 – Stephan