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

时间:2014-08-20 14:19:16

标签: java swing jtable jcheckbox defaulttablemodel

我只是想问一下,如何检查复选框上的复选框以及如何更新表格或删除复选框的行?我运行此代码并退出循环并且没有输入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 个答案:

答案 0 :(得分:2)

  

如何检测复选框

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

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

删除复选框的行?

使用removeRow(...)

DefaultTableModel方法

注意当你遍历TableModel时,你需要从最后一个条目开始并将你的索引递减1,直到你得到0,这样removeRow()方法将适用于正确的行。

编辑:

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

int i =table.getRowCount(); 

您无法从行计数开始,因为Java开始偏移为零,因此您需要使用:

int i =table.getRowCount() - 1; 

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

i++

这是一个增量,而不是一个减量。