【问题标题】:Selecting multiple items in Jlist在 Jlist 中选择多个项目
【发布时间】:2017-03-21 16:54:35
【问题描述】:

我试图一次选择多个项目并将它们添加到我的表中,但是当我尝试这样做时,我得到了一个数组越界异常。我认为这是由于我的 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);
}  

【问题讨论】:

    标签: java swing jtable jlist


    【解决方案1】:

    以及第二个参数的 Object[] 或 Vector。

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

    如果您选择 3 个项目,则表示您将在表格中显示 3 列。

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

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

    您可以只使用DefaultTableModel 的addRow(...) 方法。它会将行添加到表模型的末尾。

    //selectedItemsTable.setModel(t); // get rid of this    
    

    无需重置模型。使用模型的重点是当数据发生变化时它会通知视图(JTable)。

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2016-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2016-11-25
      • 2014-04-28
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多