2014-07-18 101 views
0

嗨我在這裏有一個代碼,但沒有更新我的JTable。刷新JTable條目

try { 
     insertRows(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

invTable.setAutoCreateRowSorter(true); 
invTable.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 
invTable.setModel(modelx); 
invTable.getTableHeader().setReorderingAllowed(false); 

insertRows,在窗體啓動時調用,它用我的數據庫中的行填充空白表。

我試着將此代碼添加到添加按鈕,它將一個新項目添加到我的數據庫。

modelx.fireTableDataChanged(); 

但它不更新我的表。我如何正確更新它?

這裏是我的insertRows代碼():

private void insertRows() throws SQLException, Exception{ 
     modelx = new DefaultTableModel(); 
     modelx.addColumn("Name"); 
     modelx.addColumn("ID"); 
     modelx.addColumn("Weight"); 
     modelx.addColumn("Doctor"); 
     modelx.addColumn("Supplier"); 
     modelx.addColumn("Department"); 
     modelx.addColumn("Cost"); 
     modelx.addColumn("Price"); 
     modelx.addColumn("Quantity"); 
     modelx.addColumn("Threshold"); 
           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

       database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\\floresClinic.accdb;"; 
     conn = DriverManager.getConnection(database, "", ""); 
     s = conn.createStatement(); 
       rs = s.executeQuery("SELECT * FROM medItem "); 
       int cou = 0; 
        while(rs.next()) 
        { 
            s1 = rs.getString("productName"); 
            s2 = rs.getString("productID"); 
            s3 = rs.getString("productWeight"); 
            s4 = rs.getString("doctor"); 
            s5 = rs.getString("sName"); 
            s6 = rs.getString("department"); 
            s7 = rs.getString("unitCost"); 
            s8 = rs.getString("unitPrice"); 
            s9 = rs.getString("quantity"); 
            s0 = rs.getString("threshold"); 
            if(!s1.equals("1")){ 
            modelx.insertRow(0, new Object [] {s1, s2, s3, s4, s5, s6, s7, s8, s9, s0}); 
            //String[] itemize ={s1,s2,s3,s4,s5,s5,s7,s8,s9,s0}; 
            //System.out.println(s1+s2); 
            //modelx.addRow(itemize); 

            } 
          cou++; 
        } 

    } 
+2

你永遠不應該有調用任何的''的的TableModel'方法fireXxx'的模型之外,這些僅供內部使用。考慮提供一個[可運行示例來演示您的問題](https://stackoverflow.com/help/mcve),這將涉及更少的猜測工作併產生更好的響應 – MadProgrammer

回答

1

正如你所說,你的modelx.fireTableDataChanged();增加了一個新的項目數據庫,但沒有進一步的代碼從數據庫中檢索這些值這就是爲什麼你的JTable沒有得到任何值填充!

您需要編寫一個方法從數據庫中檢索JTable中的值。

此外,您沒有顯示insertRows();方法的代碼!

一個有用的鏈接,您使用的JTable得到幫助和數據庫鏈接是

JTable and Database