gpt4 book ai didi

java - 为什么 JTable 只显示第一行数据?

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:09 26 4
gpt4 key购买 nike

我开始学习如何使用数据库,并尝试将数据从我的 h2 数据库导出到 JTable。该表提供了正确的行数,但是,只有第一行填充了数据。其余的是空白网格。我在下面为 JTable 发布了一些代码。如果有人需要查看更多代码,我会发布。

public class Table extends JTable{

public static int rows;
public static String[][] data;
public static String[] columns = {"Author", "Customer", "Date"};

public static void populateTable() throws ClassNotFoundException, SQLException{

//Server is name of the database class
Server server = new Server();

Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stat.executeQuery("SELECT * FROM data");
rs.last();
rows = rs.getRow();
rs.beforeFirst();

data = new String[3][rows];

while(rs.next()){
int i = 0;
data[0][i] = rs.getString("Author");
data[1][i] = rs.getString("Customer");
data[2][i] = rs.getString("Date");
System.out.println(rs.getString("Author"));
i = i++;
}
rs.close();
}
}

class MyTableModel extends DefaultTableModel{

String[] columnNames = {"Author", "Customer", "Date"};

MyTableModel() throws ClassNotFoundException, SQLException{
addColumn(columnNames[0]);
addColumn(columnNames[1]);
addColumn(columnNames[2]);
}

@Override
public int getRowCount() {
return rows;
}

@Override
public int getColumnCount() {
return 3;
}

@Override
public String getColumnName(int columnIndex) {
return columnNames[columnIndex];
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[columnIndex][rowIndex];

}

我还能够将所有数据打印到控制台,但它不会显示在 JTable 中。我已经在这个问题上停留了几个小时,但我不知道自己做错了什么。提前致谢

最佳答案

这个语句是空操作,因为 i 在它递增之前被赋值

i = i++;

就用

i++;

在进入循环前还要初始化i

关于java - 为什么 JTable 只显示第一行数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105750/

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