删除多行

时间:2017-02-28 13:13:28

标签: java swing jtable

我正在使用JCheckBox删除表格中的多行。但删除行,删除错误的索引。

for(int row = 0; row < tbl.getRowCount(); ++row)
{
     DefaultTableModel dm = (DefaultTableModel) tbl.getModel();
     Boolean ifTrue = (Boolean) tbl.getValueAt(row, 5) == true;

     if (ifTrue) 
     {
         System.out.println("Row checked " + row);
         getSelectedRows(row);
         dm.removeRow(row);
     }
     else
     {
          System.out.printf("Row %s is not checked \n", row);
     }
}

private List<Integer> getSelectedRows(int rows)
{
    List <Integer> listRows = new ArrayList();
    listRows.add(rows);

    System.out.println("Rows that deleted " +listRows);
    return listRows;
}

如果我在 0 - 6 范围内删除 0 6 行。已删除的行为 0 5 。首先在循环中删除0索引,然后新行将 0 - 5 ,因此最后一个索引将 5 而不是 6 < / p>

1 个答案:

答案 0 :(得分:2)

我只是通过从最高数字开始递减来解决问题。问候@ 911DidBush

for(int row = tblSchedule.getRowCount() - 1; row >= 0; row--)
{
 DefaultTableModel dm = (DefaultTableModel) tbl.getModel();
 Boolean ifTrue = (Boolean) tbl.getValueAt(row, 5) == true;

 if (ifTrue) 
 {
     System.out.println("Row checked " + row);
     getSelectedRows(row);
     dm.removeRow(row);
 }
 else
 {
      System.out.printf("Row %s is not checked \n", row);
 }
}