这是最后的手段。我正在研究信息系统开发,甚至我的老师都无法解决这个问题...这是一个让你破解的难题!
这就是问题所在:GUI 中的 jTable 给了我这个:
这是 Microsoft Management Studio 向我展示的内容:
正如您所知,jTable (GUI) 有 2 个主要问题:
列名“Name”不包含任何信息。应该吗?为什么不显示?
正如您所知,该表包含多个列,太多甚至无法显示。因此,我想“添加一个限制”进行更改,以便 jTable 仅显示前 6 列。
这是 DataAccessLayer 中“创建表”的代码:
private TableModel getResultSetAsDefaultTableModel(ResultSet rs) {
try {
String[] columnHeadings = new String[0];
Object[][] dataArray = new Object[0][0];
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
String columnName = md.getColumnName(i);
columnHeadings = Arrays.copyOf(columnHeadings, columnHeadings.length + 1);
columnHeadings[i - 1] = columnName;
}
int r = 0;
while (rs.next()) {
Object[] row = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
row[i - 1] = rs.getObject(i);
}
dataArray = Arrays.copyOf(dataArray, dataArray.length + 1);
dataArray[r] = row;
r++;
}
DefaultTableModel dtm = new DefaultTableModel(dataArray, columnHeadings) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
return dtm;
} catch (SQLException ex) {
Logger.getLogger(Dataaccesslayer.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
如果您想让我向您展示代码的路径(框架、 Controller ),只需说出来,我就会发布它。
如果有人能解决这个问题,我将非常感激......
问候,
基督教
最佳答案
我认为这是因为在你的 for 循环中应该说 i = 0;
而不是i = 1;
因为第一个信息(名称)位于索引 0,对吗?
在您的情况下,只需保留 for 循环并更改此行 to:row[i - 1] = rs.getObject(i-1);
就足够了
要隐藏或显示列,您可以调用 setMin
setMax
和setPreferredWidth
在您的 TableColumn 上。
关于java - GUI (java) 中的 jTable 不显示数据库中的所有数据!表模型中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655197/