gpt4 book ai didi

java - JTable添加数据后不会更新

转载 作者:行者123 更新时间:2023-12-02 09:48:40 25 4
gpt4 key购买 nike

JTable从 SQL Server 2008 数据库添加行后不会更新。

在 jaybird 2.2.5 上使用 Netbeans 8.2 我尝试移动 setModel()到不同的地方,我用过fireTableDataChanged()repaint()但什么也没发生。

String[] colNames = {"#", "Name", "Surname", "Grades", "House", "Prefect"};
DefaultTableModel model = new DefaultTableModel(colNames, 0);
Validation.newStudent(db, stringName, stringSurname); //Creates a new row with a name and a surname
int maxval = Integer.parseInt(Validation.getNumberOfStudents(db)); //Counts the amount of students in the table

String[][] rowData = new String[maxval][50];
model.setRowCount(0); //to reset the rows
for (int i = 0; i < maxval; i++){
String[] row = new String[maxval];

for (int j = 0; j < maxval; j++){

rowData[i][0] = Integer.toString(i+1);
rowData[i][1] = Validation.listStudentNames(db).get(i);
rowData[i][2] = Validation.listStudentSurnames(db).get(i);
rowData[i][3] = Validation.studentsByGrade(db).get(i);
rowData[i][4] = Validation.studentsByHouse(db).get(i);


if (Validation.listPrefects(db).get(i) == null){ //checks if a student is a prefect
rowData[i][5] = "No";
}else{
rowData[i][5] = "Yes";
}

row[j] = rowData[i][j];
}
model.addRow(row);
}teacherContentTable.setModel(model);

该表应该随新学生一起更新,但它保留了旧的表模型。

最佳答案

没有回答您的问题,但您重新填充模型的逻辑过于复杂。

无需创建二维数组,因为您一次将一行数据添加到模型中。

此外,只需使用 Vector,因为 DefaultTableModel 无论如何都会将行数组转换为 Vector。

所以代码的基本结构更像是:

String[] colNames = {"#", "Name", "Surname", "Grades", "House", "Prefect"};
DefaultTableModel model = new DefaultTableModel(colNames, 0);
Validation.newStudent(db, stringName, stringSurname);
int maxval = Integer.parseInt(Validation.getNumberOfStudents(db));

for (int i = 0; i < maxval; i++)
{
Vector<String> row = new Vector<String>();

for (int j = 0; j < maxval; j++){

row.add( Integer.toString(i+1) );
row.add( Validation.listStudentNames(db).get(i) );
row.add( Validation.listStudentSurnames(db).get(i) );
...
}

System.out.println( row ); // make sure you actually add data to the model.
model.addRow(row);
}

teacherContentTable.setModel(model);

现在假设您实际将数据添加到模型中,表将被更新,再次假设您对添加到框架中的 JTable 实例有正确的引用。

编辑:

上面的代码实际上与您所说的使用新模型更新 JTable 的问题无关。

可以用一行代码替换:

teacherContentTable.setModel( new DefaultTableModel(5, 5) );

您现在应该看到一个包含 5 行和 5 列的空 JTable。在担心从数据库获取数据之前,您首先要完成此工作。

关于java - JTable添加数据后不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480209/

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