我正在尝试使用 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/