2014-03-04 46 views
0

我想將結果集中的數據顯示到JTable中。 當我運行下面的代碼時表不會更新。在netbeans中使用JTable

public void getHouses(int price) { 
    Connection conn; 


    ArrayList<Integer> ID = new ArrayList<Integer>(); 
    ArrayList<String> Price = new ArrayList<String>(); 



    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     conn = DriverManager.getConnection("jdbc:odbc:Houses"); 
     Statement statement = conn.createStatement(); 
     ResultSet rec = statement.executeQuery("SELECT * FROM Houses WHERE Price <= " + price + ""); 

     while (rec.next()) { 
      ID.add(rec.getInt("ID")); 
      Price.add(rec.getString("Price")); 
     } 


     String[] columnNames = {"House ID", "House Price"}; 
     Object[][] rows = new Object[ID.size()][2]; 

     for (int i = 0; i < ID.size(); i++) { 
      rows[i][0] = ID.get(i); 
      rows[i][1] = Price.get(i); 
     } 

     jTable1 = new JTable(rows, columnNames); 

     statement.close(); 
    } catch (SQLException se) { 
    } catch (ClassNotFoundException cnf) {} 
} 

注意! 我通過拖放添加了JTable到gui。 我還測試了我的結果集中有數據。

+0

您創建一個新的'JTable',但你不會將它添加到任何東西 – MadProgrammer

+0

@MadProgrammer JTable已經添加,我只是創建它的一個新的實例? – Kobus

+0

檢查[這個答案](http://stackoverflow.com/a/19634168/1686291)... –

回答

2

您需要了解OP搖擺MVC模式,你需要聲明一個TableModel,您的數據存儲,然後將其設置爲你的表格,如:

TableModel myData = new DefaultTableModel(columnVector, dataVector); 
jTable1.setModel(myData); 

瞭解更多關於DefaultTableModel

+0

實際上,我認爲這將是更正確的說,OP需要了解有關MVC一般,+1 – MadProgrammer

+0

@MadProgrammer是你的權利,'TableModel'只是應用'MVC'模式概念到'JTable'中。 – Salah

+0

不幸的是,我不允許使用我的導師講述的載體。 – Kobus