[英]Selecting multiple items in Jlist
我試圖一次選擇多個項目並將它們添加到我的表中,但是當我嘗試這樣做時,卻遇到了數組超出范圍的異常。 我認為這是由於我的listToArr方法所致,因為它允許我一次選擇一個項目而沒有任何錯誤。 我之所以使用listToArr方法,是因為表模型中的insertRow()要求第一個參數為int,第二個參數為Object []或Vector。
我也很想知道在按下我的選擇按鈕后如何使突出顯示的選定項目不突出顯示。
private void populateTable(JList<String> items){
DefaultTableModel t = (DefaultTableModel) selectedItemsTable.getModel();
t.insertRow(t.getRowCount()-1, listToArr(items));
selectedItemsTable.setModel(t);
}
private Object[] listToArr(JList<String> l){
Object[] o = new Object[l.getComponentCount()];
int i=0;
for(Object value : l.getSelectedValuesList()){
o[i] = (Object) value;
i++;
}
return o;
}
private void SelectNeedActionPerformed(java.awt.event.ActionEvent evt) {
populateTable(needsList);
}
第二個參數是Object []或Vector。
第二個參數是一個包含行中每一列數據的數組。 當您僅選擇一個項目時,這意味着表中只有一個列。
如果選擇3個項目,則表示表中將有3列。
我懷疑您只用一個列創建了表。 這意味着您需要遍歷選定項的列表,並添加一個分別包含每個項的Array,這將為您提供3行且僅包含一列。
因為表模型中的insertRow()要求第一個參數為int
您可以只使用DefaultTableModel
的addRow(...)
方法。 它將把行添加到表模型的末尾。
//selectedItemsTable.setModel(t); // get rid of this
無需重置模型。 使用模型的要點是,當數據更改時,它將通知視圖(JTable)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.