gpt4 book ai didi

java - 更新 jTable - 将 jTable 作为参数传递

转载 作者:行者123 更新时间:2023-11-29 03:36:51 27 4
gpt4 key购买 nike

我在 A 类中有一个方法,我希望 B 类(主 GUI)调用该方法,但是 A 类需要对 B 类中的 jTable 执行一些操作。

我不希望此方法位于 B 类中,因为它需要连接到数据库,而且我不希望我的 GUI 包含任何此类方法。

这是类A中的代码:

public void populatejTable(TableModel x) {
try {
String stmt = "SELECT * FROM APP.DATAVAULT";
PreparedStatement ps = Main.getPreparedStatement(stmt);
ResultSet rs = ps.executeQuery();
x.setModel(DbUtils.resultSetToTableModel(rs));
ps.close();
rs.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}

我需要传递一个 jTable 类型的参数来设置它的模型。我尝试了所有不同的常见数据类型,例如 String、int 等...甚至尝试了 jTable 和 TableModel。

我猜你真的不应该这样做,但我看不出更好的解决方法?

这是在 B 类(我的 GUI)中调用此方法的代码:

//table
Account acc = new Account();
acc.populatejTable(datavaultjTable);

我应该怎么做?

我正在使用 Netbeans 7.3 Beta 2 GUI 构建器来创建表和 GUI - 在 OS X 上用 Java 编写。

最佳答案

A 类中的代码无法编译。 TableModel 中没有setModel() 方法。在 GUI 类中不包含数据库相关代码的目标是好的,但如果它导致在数据库相关代码中包含 GUI 代码,结果就更糟了。

GUI 类应该只包含 GUI 代码。数据访问代码应该只包含与数据库相关的代码。 GUI 应该调用数据库访问代码的方法来获取数据。它不应将 JTable 实例甚至 TableModel 实例传递给数据访问代码:

public class GUI {
private JTable table;
private MyTableModel tableModel;
private DataAccess dataAccess;
...

public void fillTableWithDataFromDatabase() {
List<Product> products = dataAccess.getProductsFromDatabase();
tableModel.setProducts(products);
}
}

public class DataAccess {
public List<Product> getProductsFromDatabase() {
// TODO:
// create an empty list
// execute a query
// loop through each row
// for each row, create a Product instance and add it to a list
// return the list
}
}

关于java - 更新 jTable - 将 jTable 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com