【发布时间】:2013-06-19 11:55:17
【问题描述】:
我需要用 MySQL DB 中的一些数据填充 Swing 表。问题是该表没有显示所有列(即a.aircraftType 和b.aircraftCategory)。在调试模式下,我检查了查询是否返回了正确的数据。那么,为什么最后有些列没有显示呢?
private JTable tbArrivals;
private QueryTableModelFS mdArrivals;
mdArrivals = new QueryTableModelFS();
tbArrivals = new JTable(mdArrivals);
private void fillArrivals() {
mdArrivals.setHost(url); mdArrivals.setDB(db); mdArrivals.setLogin(login); mdArrivals.setPassw(passw);
String query;
query = "SELECT a.id,a.flightNum_arr,a.from_ICAO,a.ETA,a.pkId,a.aircraftType,b.aircraftCategory " +
"FROM flightschedule a, aircrafts b " +
"WHERE a.aircraftType = b.aircraftType;";
mdArrivals.setQuery(query);
}
public void setQuery(String query) {
cache = new Vector();
try {
// Execute the query and store the result set and its metadata
Connection con = getConnection();
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery(query);
ResultSetMetaData meta = rs.getMetaData();
colCount = meta.getColumnCount();
// Rebuild the headers array with the new column names
headers = new String[colCount];
for (int h = 1; h <= colCount; h++) {
headers[h - 1] = meta.getColumnName(h);
}
while (rs.next()) {
String[] record = new String[colCount];
for (int i = 0; i < colCount; i++) {
record[i] = rs.getString(i + 1);
}
cache.addElement(record);
}
fireTableChanged(null);
rs.close();
if (con.getAutoCommit() != false) {
con.close();
}
} catch (Exception e) {
cache = new Vector();
e.printStackTrace();
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
我会推荐使用
ResultSetTableModel,它会为你解决所有的麻烦。 -
您确定将表格和表格标题都添加到容器中(或使用了滚动窗格)。请参阅
JTable教程中的Adding a table to a container
标签: java mysql swing jtable jtableheader