jTable在从数据库中获取数据后没有显示任何内容
我一直试图从我的Derby数据库获取数据并填充由Netbeans GUI构建器创建的jTable。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);
}
}
});
}
的代码设置为populat Ë我的JTable从datavault表中的所有数据,无论记录哪些用户在
我有我datavault表中的数据:
而这正是我的JTable的样子时,我运行我的程序,并成功登录:
这是它应该是什么样子,但人口:
我在哪里错了我的代码?我已经为此停留了2周。
您需要添加columnNames
您columns
头数据,否则什么也不会出现在你的JTable
:
for (int column = 1; column <= columnCount; column++) {
...
}
columns.add(columnNames); <--- add this line
不是有这个数据冗余变量,你可以简单地使用columnNames
为你的模型,而不是:
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
这应该去哪里?这个jTable是由GUI构建器创建的,所以我不确定我是否应该在jTable的自定义代码部分内做些什么。 – 2013-03-02 14:56:45
@JohnVasiliou:应该很明显。没有两个变量试图做同样的事情,列和columnNames。只有一个。 1+给雷梅斯。 – 2013-03-02 15:00:04
@HovercraftFullOfEels好点,更新:) – Reimeus 2013-03-02 15:02:44
+1的详细问题。希望所有的问题都是这个框架:) – Reimeus 2013-03-02 15:05:07