Java 在Jlist中选择多个项目

Java 在Jlist中选择多个项目,java,swing,jtable,jlist,Java,Swing,Jtable,Jlist,我试图一次选择多个项目并将它们添加到我的表中,但当我尝试这样做时,我得到了一个数组越界异常。我认为这是由于我的listToArr方法,因为它允许我一次只选择一个项目,没有任何错误。我之所以使用listToArr方法,是因为表模型中的insertRow()要求第一个参数为int,第二个参数为Object[]或Vector 我还想知道如何在按下选择按钮后使高亮显示的选定项目变为不高亮显示 private void populateTable(JList<String> items){

我试图一次选择多个项目并将它们添加到我的表中,但当我尝试这样做时,我得到了一个数组越界异常。我认为这是由于我的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);
}  
private void populateTable(JList项){
DefaultTableModel t=(DefaultTableModel)选择EditemStable.getModel();
t、 insertRow(t.getRowCount()-1,listToArr(items));
选择editemstable.setModel(t);
}
私有对象[]listToArr(JList l){
对象[]o=新对象[l.getComponentCount()];
int i=0;
for(对象值:l.getSelectedValuesList()){
o[i]=(对象)值;
i++;
}
返回o;
}
private void SelectNeedActionPerformed(java.awt.event.ActionEvent evt){
可推广(需求列表);
}  
以及第二个参数的对象[]或向量

第二个参数是一个数组,其中包含行中每列的数据。当您仅选择单个项目时,这意味着您在表中只有一列

如果选择3项,则表示表中有3列

我怀疑您创建的表只有一列。这意味着您需要遍历所选项目的列表,并分别添加一个包含每个项目的数组,这将为您提供3行,其中只有一列

因为表模型中的insertRow()要求第一个参数为int

您只需使用
DefaultTableModel
addRow(…)
方法即可。它将把行添加到表模型的末尾

//selectedItemsTable.setModel(t); // get rid of this    
无需重置模型。使用模型的意义在于,当数据发生更改时,它将通知视图(JTable)