我只是想问,如何检测复选框上的复选框以及如何更新表或删除复选框的行?我运行这段代码,它退出了循环,没有输入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
删除复选框的行?
使用DefaultTableModel
的removeRow(...)
方法
注意,当您循环遍历TableModel时,您需要从最后一个条目开始,并将索引减1,直到得到0,以便removeRow()方法将在正确的行上工作。
编辑:你是否在循环中添加了System.out.println(…)语句以确保代码正在执行?这是一种测试逻辑的简单调试技术。你的代码不会执行,因为你的循环结构不正确。
int i =table.getRowCount();
你不能从行数开始,因为Java从0开始偏移,所以你需要使用:
int i =table.getRowCount() - 1;
我建议你需要decrement
索引。为什么使用:
i++