如何使用默认模型表更新和检测选中的复选框



我只是想问,如何检测复选框上的复选框以及如何更新表或删除复选框的行?我运行这段代码,它退出了循环,没有输入if else语句:(

for(int i =table.getRowCount(); i>= 0 ; i++)
{
    a = (String)table.getModel().getValueAt(i,1);
    boolean getBool = (boolean)table.getModel().getValueAt(i, 6);
    if(getBool)
    {
        JOptionPane.showMessageDialog(null,getBool); 
        String sql2 = "UPDATE room_record SET Book_status = 'Checked_In' WHERE
        Room_Record_ID = '" + a + "'";
        statement = conn.prepareStatement(sql2);
        statement.executeUpdate(sql2);
        ((DefaultTableModel) table.getModel()).removeRow(i)
        //model2.fireTableDataChanged();
        JOptionPane.showMessageDialog(null,"done"); 
        //System.out.println("true");
    }
}

如何检测复选框

创建一个循环来读取TableModel。然后使用:

if (model.getValueAt(...).equals(Boolean.TRUE))
    // do something

删除复选框的行?

使用DefaultTableModelremoveRow(...)方法

注意,当您循环遍历TableModel时,您需要从最后一个条目开始,并将索引减1,直到得到0,以便removeRow()方法将在正确的行上工作。

编辑:

你是否在循环中添加了System.out.println(…)语句以确保代码正在执行?这是一种测试逻辑的简单调试技术。你的代码不会执行,因为你的循环结构不正确。

int i =table.getRowCount(); 

你不能从行数开始,因为Java从0开始偏移,所以你需要使用:

int i =table.getRowCount() - 1; 

我建议你需要decrement索引。为什么使用:

i++

最新更新