无法使用两个 类 从 ResultSet 填充 jTable
Unable to populate jTable from ResultSet using two classes
我有一个 class 用于查询,另一个用于 GUI。所以在我的 GUI class 中,我有这些 public 成员:
model = (DefaultTableModel) table.getModel();
table = new JTable();
在查询中class我有这个方法:
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 class 中做些什么吗?
快捷键没问题!我正在寻找最简单的方法。
model = (DefaultTableModel) table.getModel();
table = new JTable();
上面的代码没有意义。
首先,您从 "table" 变量中获取模型。
然后您创建一个新的 table。当您创建新的 table 时,table 会创建一个新模型,因此它不再引用原始模型。
因此,当您更新模型中的数据时,您更新的是旧模型,而不是 table 的当前模型。
基本代码应该是:
DefaultTableModel model = new DefaultTableModel(...);
JTable table = new JTable( model );
现在,如果您更新模型中的数据,table 和模型会同步。
我有一个 class 用于查询,另一个用于 GUI。所以在我的 GUI class 中,我有这些 public 成员:
model = (DefaultTableModel) table.getModel();
table = new JTable();
在查询中class我有这个方法:
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 class 中做些什么吗?
快捷键没问题!我正在寻找最简单的方法。
model = (DefaultTableModel) table.getModel();
table = new JTable();
上面的代码没有意义。
首先,您从 "table" 变量中获取模型。
然后您创建一个新的 table。当您创建新的 table 时,table 会创建一个新模型,因此它不再引用原始模型。
因此,当您更新模型中的数据时,您更新的是旧模型,而不是 table 的当前模型。
基本代码应该是:
DefaultTableModel model = new DefaultTableModel(...);
JTable table = new JTable( model );
现在,如果您更新模型中的数据,table 和模型会同步。