學Java時用到了JList不知怎么添加元素,這里說說我的經驗:
Jlist顯示對象列表並且允許用戶選擇一個或多個項的組件。單獨的模型 ListModel
維護列表的內容。
這里要注意在把Jlist添加到容器時可以選擇用JScrollPane(提供輕量級組件的 scrollable 視圖。JScrollPane
管理視口、可選的垂直和水平滾動條以及可選的行和列標題視口。)
例如:JPanel jp = new JPanel();
JScrollPane jsp = new JScrollPane();
JList jl = new JList();
jsp.add(jl);
jp.add(jsp);
這里只是個例子:為了說明JList 對象不能直接添加到JPanel中,而是要添加到JScrollPane中,之后再把JScrollPane 對象添加到JPanel中。這里沒有加有關布局管理器的代碼,讀者可以根據這個思想自行添加。(這只是我的經驗,如有更好的方法還請補充)。
再說說如何動態的添加元素到JList中:
先舉例說明靜態的添加元素:
String[] data = {"one", "two", "three", "four"};
JList myList = new JList(data);
Vector superClasses = new Vector();
Class rootClass = javax.swing.JList.class;
for(Class cls = rootClass; cls != null; cls = cls.getSuperclass()) {
superClasses.addElement(cls);
}
JList myList = new JList(superClasses);
ListModel model = myList.getModel();
for(int i = 0; i < model.getSize(); i++) {
System.out.println(model.getElementAt(i));
}
這三種都是jdk文檔里的例子,都是在創建JList的時候靜態的添加元素,添加后不能修改,刪除,增加。
如果要動態的添加,以下是我的經驗:
按我的理解,其實JList不管數據的添加,而是由DefaultListModel類實現數據的添加,先說說這個類的繼承關系。
ListMode(接口)<----AbstractListMode類<------DefaultListModel類
例如:
DefaultListModel dlm = new DefaultListModel();
dlm.addElement(element1);
dlm.addElement(element2);
.....
JList jl = new JList();
jl.setModel(dlm);
這樣就把元素都添加進去了。
同理:要刪除全部信息
dlm.clear();
jl.setModel(dlm);
即可。
移除此列表中指定位置處的元素
則:
dlm.remove(int index);
jl.setModel(dlm);
總之,就是JList不管元素的添加,而是由DefaultListMode管,最后設置Jlist.setMode(DefaultListMode)就完成了元素的動態添加。想了解更多有關Jlist的知識請查詢Jdk幫助文檔。
以上都是我的一點經驗,歡迎大家討論糾錯。