gpt4 book ai didi

java - 从数据库中获取数据后 jTable 不显示任何内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:17 26 4
gpt4 key购买 nike

我一直在尝试从我的 Derby 数据库中获取数据并填充由 Netbeans GUI 构建器创建的 jTable。

我有一个帐户类,其中保存了以下代码:

public static DefaultTableModel buildTableModel() throws SQLException {
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
Vector columns = new Vector();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String stmt = "SELECT * FROM APP.DATAVAULT";
ps = Main.getPreparedStatement(stmt);
rs = ps.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();

// names of columns
Vector<String> columnNames = new Vector<String>();
int columnCount = metaData.getColumnCount();
for (int column = 1; column <= columnCount; column++) {
columnNames.add(metaData.getColumnName(column));
}
// data of the table
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
} finally {
try {
ps.close();
} catch (Exception e) {
}
try {
rs.close();
} catch (Exception e) {
}
}
DefaultTableModel tableModel = new DefaultTableModel(data, columns);
return tableModel;
}

如您所见,它返回一个带有两个参数(数据和列)的 DefaultTableModel。

然后,在我的 GUI 类中,我有以下内容:

我的领域:

Account acc = new Account();

构造函数:

public SPPMainGUI() throws SQLException {
initComponents();
datavaultjTable.setModel(acc.buildTableModel());
}

我的主要方法:

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
new SPPMainGUI().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(SPPMainGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}

代码设置为使用数据仓库表中的所有数据填充我的 jTable,无论哪个用户登录。

我的数据仓库表中有数据:

enter image description here

这就是我运行程序并成功登录时我的 jTable 的样子:

enter image description here

这是它应该看起来的样子,但已填充:

enter image description here

我的代码哪里出错了?我已经被这个难住了 2 周了。

最佳答案

您需要将您的 columnNames 添加到您的 columns header 数据中,否则您的 JTable 中不会出现任何内容:

for (int column = 1; column <= columnCount; column++) {
...
}
columns.add(columnNames); <--- add this line

您可以简单地为您的模型使用 columnNames 而不是为这些数据设置冗余变量:

DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);

关于java - 从数据库中获取数据后 jTable 不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175608/

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