刷新JTable条目

时间:2014-07-18 04:25:05

标签: java swing 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++;
                    }  

    }

1 个答案:

答案 0 :(得分:1)

正如您所提到的,您的modelx.fireTableDataChanged();会向数据库添加一个新项目,但没有其他代码可以从数据库中检索这些值,这就是为什么您的JTable没有填充任何值!

您需要编写一个方法来从数据库中检索JTable中的值。

另外,您没有显示insertRows();方法的代码!

使用JTable和数据库链接获取帮助的有用链接是

JTable and Database