java - 我正在使用 Camick 的 ListTableModel 和 RowTableModel,JTABLE 中没有数据

标签 java mysql metadata resultset

我正在尝试使用 ListTableModel 并尝试遵循一些在线示例,但仍然发现很难在我的 Jtable 中显示“resultSet”数据。我正在使用模型- View - Controller 方法在 netbeans 中构建 GUI 应用程序。我所有的 GUI 组件都放在 View 中, Controller 正在处理任何更新以及对该 View 的可见性。模型类具有所有查询,并负责使用 JDBC 直接访问数据库。

“Jtable”“searchTable”在 View 类中创建和初始化,并由我的 Controller 通过方法 (getSearchTable()) 访问。

public JTable getSearchTable(){
// view class
return searchTable;

}

我按照 Camick 的教程在 Controller 类中创建了“ListTableModel”。

private Product_View productView;
private Product_Model productModel;
    private Product product;

public Product_Controller(Product_Model model, Product_View view){
    this.productModel = model;
    this.productView = view;

    view.addSaveListener(new SaveListener());
    view.addCloseListener(new CloseListener());
            view.addSearchSingleListener(new SearchListener());
}

public void displayProductView(){
    this.productView.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.productView.setVisible(true);
} class SearchListener implements ActionListener {

    public SearchListener() {
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        ListTableModel model = null;
        String prodName = productView.getProductName();
        JTable tempTable = productView.getSearchTable();

        model = productModel.getProduct(prodName, model);
        tempTable = new JTable(model);

    }
}

最后,“getProduct”方法在模型类中并由我的 Controller 类调用。

public ListTableModel getProduct(String productName, ListTableModel model){
    String query = "SELECT * FROM Products WHERE name='" + productName + "';";

    Statement stmt;

    try {
        stmt = this.conn.createStatement();
        stmt.executeQuery (query);
        ResultSet rs = stmt.getResultSet();
                    writeResultSet(rs);
        model = ListTableModel.createModelFromResultSet(rs);  
        rs.close ();
        stmt.close ();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }           
    return model;
} 

Jtable 不返回任何内容,我如何查看我的 ResultSet 数据(我已经将“writeResultSet”返回的值打印到控制台,所以查询工作正常?

最佳答案

创建表格不会将表格添加到 GUI。在您的代码中的某处,您需要如下代码:

frame.add( table );

如果您正在更新现有表,那么您不需要创建新表,您所做的只是:

table.setModel(...);

重新创建模型后。

编辑:

要测试您的 SQL,请使用如下代码创建一个简单的 SSCCE:

ListTableModel model = ListTableModel.createModelFromResultSet( resultSet );
JTable table = new JTable( model );
frame.add( new JScrollPane( table ) );
frame.setSize(...);
frame.setVisible( true );

关于java - 我正在使用 Camick 的 ListTableModel 和 RowTableModel,JTABLE 中没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542464/

相关文章:

java - 浏览服务器机器文件系统

java - 如何使用 Spring Boot 外部化配置?

php - 获取具有特定 meta_key 且其 meta_value 在 WooCommerce 中相等的所有产品

java - 在Java中的JFrame上拖动矩形

java - @Stateless 与 @RequestScoped

php - 根据数据库中的日期选择数据

php - 通过页面传递多个变量 PHP MYSQL

python - 将 python 用于 MySQL 的 INSERT

python - 如何使用 Python 从 Windows 中的视频文件获取标题属性

r - 将 SPSS 数据中的标签和值导出为 Json