从不同的类填充jTable

时间:2017-12-11 06:09:54

标签: java swing jtable

我有两个类,第一个是具有jTable的GUI,另一个是用于查询数据库的GUI。 在同一个类中向表中添加行可以正常工作。我用这种方式:

((DefaultTableModel) table.getModel()).addRow(values);

虽然values是包含行内容的Object []。 这工作正常。但是填充必须从另一个班级完成。所以我在查询类中有:

((DefaultTableModel) rg.table.getModel()).addRow(values);

虽然rg是GUI类的对象。 table 公开

即使抛出异常也没有做任何事情。

我的查询类应该更改什么?这是查询类中的方法:

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();
            Object[] attributes = new Object[9];

            Register rg = new Register();


            while (rs.next()) {
                attributes[0] = String.valueOf(rs.getString(1));
                attributes[1] = rs.getString(2);
                attributes[2] = rs.getString(3);
                attributes[3] = rs.getString(4);
                attributes[4] = rs.getString(5);
                attributes[5] = rs.getString(6);
                attributes[6] = rs.getString(7);
                attributes[7] = rs.getString(8);
                attributes[8] = rs.getString(9);
                ((DefaultTableModel) rg.table.getModel()).addRow(attributes);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  • 从数据库中获取数据很好。我可以将它们打印到控制台。
  • jTable是我认为是正确构建的。我能说出来因为我 可以正确插入行,但只能在GUI类本身内插入行 那里有jTable的类。)
  • 将插入逻辑移动到另一个类(查询类)是 我被卡住了。

1 个答案:

答案 0 :(得分:0)

我通过在frame对象之前调用model对象来解决这个问题。 因此,在GUI类中公开rg.model.addRow();之后,我使用rg.frame.model.addRow();而不是frame