Java 未从JTable中删除所需的行

Java 未从JTable中删除所需的行,java,swing,jtable,Java,Swing,Jtable,这是我的用户界面: 一旦我取消选中“single”复选框,需要删除表中房间类型为“single”的以下行 我是这样尝试的: private void singlecheckboxActionPerformed(java.awt.event.ActionEvent evt) { if (!singlecheckbox.isSelected()) { for (int i = 0; i <roomtable.getRowCount(); i++) {

这是我的用户界面:

一旦我取消选中“single”复选框,需要删除表中房间类型为“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);

            }

        }
    }   

}
private void singlecheckboxActionPerformed(java.awt.event.ActionEvent evt){
如果(!singlecheckbox.isSelected()){

对于(int i=0;i删除第一行后,
rowCount
将更改

例如,这就是循环中发生的事情

i = 0
rowCount = 2
delete Row at i
rowCount = 1;
i = 1 ... 1 > rowCount, exit...
相反,你可以尝试更像

((DefaultTableModel) roomtable.getModel()).setRowCount(0);
while (count > 0) {
    remove first element from list...
}
我知道,大骗子

作为将来的参考,当从某种类型的列表中删除此项时(并且没有
removeAll
clear
方法),最好使用类似于

((DefaultTableModel) roomtable.getModel()).setRowCount(0);
while (count > 0) {
    remove first element from list...
}
已更新…

好的,所以您需要删除“某些”项…您可以使用
for循环
,因为自动更改索引值,您需要对索引值进行更多控制,并仅在需要更改时增加,例如,当您希望保留行时

DefaultTableModel model = (DefaultTableModel)roomtable.getModel();
int row = 0;
while (row < model.getRowCount()) {
    if ((model).getValueAt(row, 1).equals("Single")) {
        model.removeRow(row);
    } else {
        row++;
    }
}
DefaultTableModel=(DefaultTableModel)roomtable.getModel();
int行=0;
while(行
但我只需要删除房间类型为“Single”的行可能更合适?取消选中复选框时会发生什么情况?:-p可能不会…重新查看图像:-)
仅当需要将视图转换为索引时,才需要对索引值和增量进行更多控制models@mKorbel因为只直接处理模型不应该是必需的,如果我使用的是coming the view,那么是的,它将是必需的。我可能错了,但我认为这是一个更好的例子。如果你取消选中复选框怎么办x、 您将如何取回数据?请参见上面的官方教程链接,并参见示例。