亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

添加數據后 JTable 不會更新

添加數據后 JTable 不會更新

元芳怎么了 2023-01-05 16:51:58
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 surnameint maxval = Integer.parseInt(Validation.getNumberOfStudents(db)); //Counts the amount of students in the tableString[][] rowData = new String[maxval][50];model.setRowCount(0); //to reset the rowsfor (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);該表應該與新學生一起更新,但它保留了舊表模型。
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

沒有回答您的問題,但是您重新填充模型的邏輯過于復雜。


無需創建二維數組,因為您一次將一行數據添加到模型中。


此外,只需使用 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。在擔心從數據庫中獲取數據之前,您首先要讓它工作。


查看完整回答
反對 回復 2023-01-05
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號