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



我正在尝试使用ListTableModel,并尝试在线跟踪一些示例,但仍然发现很难在Jtable中显示"resultSet"数据。我使用模型视图控制器方法在netbeans中构建GUI应用程序。我的所有GUI组件都放置在视图中,控制器正在处理任何更新以及该视图的可见性。模型类拥有所有的查询,并负责使用JDBC直接访问数据库。

"Jtable"searchTable"是在视图类中创建和初始化的,并且由我的控制器通过方法(getSearchTable())访问。

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

我在控制器类中创建了"ListTableModel",并遵循Camick的教程。

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"在模型类中,由我的控制器类调用。

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 );

相关内容

  • 没有找到相关文章

最新更新