删除多行

Deleting multiple row

我正在使用 JCheckBox 删除 table 中的多行。但是删除行,删除了错误的索引。

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 范围内删除一行 06 .已删除的行是 05。 0 索引首先在循环中被删除,然后新行将是 0 - 5,因此最后一个索引将是 5 而不是 6

我只是通过从最高数开始递减来解决问题。问候@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);
 }
}