无法使用两个 类 从 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 和模型会同步。