[英]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.