未从JTable中删除所需的行

时间:2014-10-21 07:04:47

标签: java swing jtable

这是我的ui: enter image description here

在我取消选中复选框"单身"表中的以下行的房间类型为" 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);

            }

        }
    }   

}

但问题是只删除了第一行,而不是第一行和第二行..

1 个答案:

答案 0 :(得分:3)

删除第一行后,rowCount会更改...

例如,这就是循环中的内容

i = 0
rowCount = 2
delete Row at i
rowCount = 1;
i = 1 ... 1 > rowCount, exit...

相反,你可以尝试更像......

((DefaultTableModel) roomtable.getModel()).setRowCount(0);

我知道,大量作弊......

为了将来参考,当从某种类型列表中删除此内容时(并且没有removeAllclear方法),最好使用更类似的内容...

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++;
    }
}