我有一个查询类,另一个用于GUI。所以在我的GUI类中,我有这些 public 成员:
model = (DefaultTableModel) table.getModel();
table = new JTable();
在查询类中我有这个方法:
public void selectPassengers(int rows) {
PreparedStatement pst = null;
ResultSet rs = null;
String query = "SELECT * FROM brs.passenger";
try {
pst = con.prepareStatement(query);
rs = pst.executeQuery();
String[] attributes = new String[9];
GUI rg = new GUI();
while (rs.next()) {
attributes[0] = rs.getString(1);
attributes[1] = rs.getString(2);
attributes[2] = rs.getString(3);
rg.model.insertRow(rg.table.getRowCount(), new Object[] {
attributes[0], attributes[1], attributes[2]});
}
} catch (Exception e) {
e.printStackTrace();
}
}
它没有插入也没有抛出异常。它只是做了什么。尽管如果我尝试在while-loop
内打印到控制台,它会打印出正确的数据。数据库和连接都很好。
执行查询后我应该在GUI类中做些什么吗?
快捷方式没问题!我正在寻找最简单的方法。
答案 0 :(得分:0)
model = (DefaultTableModel) table.getModel();
table = new JTable();
上述代码毫无意义。
首先,你从#34;表中获得模型"变量
然后创建一个新表。创建新表时,该表会创建一个新模型,因此它不再引用原始模型。
因此,当您更新模型中的数据时,您将更新旧模型,而不是表的当前模型。
基本代码应为:
DefaultTableModel model = new DefaultTableModel(...);
JTable table = new JTable( model );
现在,如果更新模型中的数据,表和模型将同步。