有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我只是想问,如何检测复选框上的复选框,以及如何更新表或删除复选框的行?我运行了这段代码,它退出了循环,没有输入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");
    }

}

共 (1) 个答案

  1. # 1 楼答案

    how to detect a checked box

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

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

    delete the row of the checked box?

    使用DefaultTableModelremoveRow(...)方法

    注意:当您在TableModel中循环时,需要从最后一个条目开始,并将索引减少1,直到达到0,这样removeRow()方法将在正确的行上工作

    编辑:

    你添加了系统吗。出来println(…)语句以确保代码正在执行?这是一种测试逻辑的简单调试技术。由于循环结构不正确,代码无法执行

    int i =table.getRowCount(); 
    

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

    int i =table.getRowCount() - 1; 
    

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

    i++
    

    这是递增的,不是递减的