我有一个jtable" clientTable"在clientRecorderUI JFrame(扩展JFrame)中。我还有一个名为databaseHandler的类(扩展clientRecorderUI的公共类),我想用它作为控制器/模型(MVC-esque有点设计)。 databaseHandler中的方法称为populateTable(一个用数据库值填充表的sql)。
我还创建了在clientRecorderUI中测试相同的方法,看看代码是否合理,它是否像魅力一样(因此populateTable();在评论中)
如何从另一个类中正确调用方法并使用其图形组件? 我正在研究NetBeans btw。
提前谢谢!
这就是我在windowActivated上调用方法的方法:
private void formWindowActivated(java.awt.event.WindowEvent evt) {
databaseHandler tester=new databaseHandler();
tester.populateTable(); // TODO add your handling code here:
//populateTable();
}
这是databaseHandler中的方法:
protected void populateTable(){
String query="Select * from clienttable";
try {
//Call connectDB method to connect to database
Connection dbCon=mySqlConnection.ConnectDB();
//Prepare the query
PreparedStatement pst=dbCon.prepareStatement(query);
//return ResultSet
ResultSet rs=pst.executeQuery(query);
clientTable.setModel(DbUtils.resultSetToTableModel(rs));
} catch (SQLException ex) {
Logger.getLogger(databaseHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:2)
让populateTable
返回TableModel
protected TableModel populateTable(){
TableModel model = null;
String query="Select * from clienttable";
try {
//Call connectDB method to connect to database
Connection dbCon=mySqlConnection.ConnectDB();
//Prepare the query
PreparedStatement pst=dbCon.prepareStatement(query);
//return ResultSet
ResultSet rs=pst.executeQuery(query);
model = DbUtils.resultSetToTableModel(rs);
} catch (SQLException ex) {
Logger.getLogger(databaseHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return model;
}
然后当你调用它时,只需将它应用于你所拥有的JTable
实例
private void formWindowActivated(java.awt.event.WindowEvent evt) {
databaseHandler tester=new databaseHandler();
TableModel model = tester.populateTable();
// Apply it do what ever JTable you have
}