删除多行
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 范围内删除一行 0 和 6 .已删除的行是 0 和 5。 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);
}
}
我正在使用 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 范围内删除一行 0 和 6 .已删除的行是 0 和 5。 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);
}
}