我正在使用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>
答案 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);
}
}