Java JTable缺少第一行
我已经搜索了整个网络,但我找不到解决方案,所以我决定在这里询问 下面的问题:我使用这两种方法用DefaultTableModel填充JTable,结果集显示了正确数量的数据项(我已经用System.out.println搜索过了),但是JTable总是漏掉第一行 我正在使用一种方法获得如下结果集:Java JTable缺少第一行,java,swing,jdbc,jtable,defaulttablemodel,Java,Swing,Jdbc,Jtable,Defaulttablemodel,我已经搜索了整个网络,但我找不到解决方案,所以我决定在这里询问 下面的问题:我使用这两种方法用DefaultTableModel填充JTable,结果集显示了正确数量的数据项(我已经用System.out.println搜索过了),但是JTable总是漏掉第一行 我正在使用一种方法获得如下结果集: public static JTable DBCFillBTableAuftraege() { Connection con = null; Statement stmt =
public static JTable DBCFillBTableAuftraege() {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
JTable table = null;
try {
con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement( );
rs = stmt.executeQuery("SELECT a.auftrags_nr, k.firma, a.auftragsdatum, a.lieferdatum, a.rechnungsbetrag, k.name, k.strasse, k.plz, k.ort from auftrag a join kunde k on k.kunden_nr = a.kunden_nr ");
while (rs.next()) {
table = new JTable(tableModel(rs));
return table;
}
} catch (SQLException e) {
System.out.println(e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return table;
}
然后调用此方法:
public static DefaultTableModel TableModel(ResultSet rs)
throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();
System.out.println(rs);
// 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
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
return new DefaultTableModel(data, columnNames);
}
它工作正常,它显示了我的列标题和数据,除了一个问题:
它总是缺少第一行而从第二行开始您的问题从这里开始
// Move to first row...
while (rs.next()) {
table = new JTable(tableModel(rs));
return table;
}
和舱单
// Move to second row and beyond...
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
//移动到第二行及之后。。。
while(rs.next()){
向量=新向量();
对于(int columnIndex=1;columnIndex您的问题从这里开始
// Move to first row...
while (rs.next()) {
table = new JTable(tableModel(rs));
return table;
}
和舱单
// Move to second row and beyond...
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
//移动到第二行及之后。。。
while(rs.next()){
向量=新向量();
对于(int columnIndex=1;columnIndex
您在这里使用结果集的第一行,然后调用tableModel()
,这将使用其他行。while循环没有用。只需执行以下操作即可
table = new JTable(tableModel(rs));
return table;
您在这里使用结果集的第一行,然后调用tableModel()
,这将使用其他行。while循环没有用。只需执行以下操作即可
table = new JTable(tableModel(rs));
return table;
太谢谢你了,我自己永远也找不到它。)太谢谢你了,我自己永远也找不到它。)太谢谢你了!就是这样,我永远也找不到它myself@Rob987是的,那是鬼鬼祟祟的一个谢谢你!就是这样,我永远也找不到它myself@Rob987是的,那是个鬼鬼祟祟的家伙