这是我的ui:
在我取消选中复选框"单身"表中的以下行的房间类型为" Single"需要删除。
这是我的尝试方式:
private void singlecheckboxActionPerformed(java.awt.event.ActionEvent evt) {
if (!singlecheckbox.isSelected()) {
for (int i = 0; i <roomtable.getRowCount(); i++) {
if (((DefaultTableModel)roomtable.getModel()).getValueAt(i, 1).equals("Single")) {
((DefaultTableModel) roomtable.getModel()).removeRow(i);
}
}
}
}
但问题是只删除了第一行,而不是第一行和第二行..
答案 0 :(得分:3)
删除第一行后,rowCount
会更改...
例如,这就是循环中的内容
i = 0
rowCount = 2
delete Row at i
rowCount = 1;
i = 1 ... 1 > rowCount, exit...
相反,你可以尝试更像......
((DefaultTableModel) roomtable.getModel()).setRowCount(0);
我知道,大量作弊......
为了将来参考,当从某种类型列表中删除此内容时(并且没有removeAll
或clear
方法),最好使用更类似的内容...
while (count > 0) {
remove first element from list...
}
<强>更新... 强>
好的,所以你需要删除“某些”项目......你可以使用for-loop
作为自动更改索引值,你需要更多地控制索引值,只有当你需要它时才能增加改变,就像你想要保留行一样,例如......
DefaultTableModel model = (DefaultTableModel)roomtable.getModel();
int row = 0;
while (row < model.getRowCount()) {
if ((model).getValueAt(row, 1).equals("Single")) {
model.removeRow(row);
} else {
row++;
}
}