2013-03-12 93 views
0

我試圖向JList添加一行,但它不會發生。我正在使用Java + MySQL。但是當使用System.out.println()時,它可以工作。向JList添加一行

下面是用於接收數據的代碼:

public void writeResultSet(ResultSet resultSet) throws SQLException { 

    while (resultSet.next()) { 

     String student_firstname = resultSet.getString("student_firstname"); 
     String student_middlename = resultSet.getString("student_middlename"); 
     String student_lastname = resultSet.getString("student_lastname"); 

     DefaultListModel listModel = new DefaultListModel(); 
     listModel.addElement("" + student_firstname + " " + student_middlename + " " + student_lastname); 
     jList1.setModel(listModel); 

    } 
} 

另外,如果我嘗試添加的ListModel在private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)但使用定義的字符串,它的工作原理,但我需要將其插入到該方法使我可以從MySQL獲取數據。

+1

您正在創建一個新模型,並將其列入結果的每一行一次,您確定這是您想要的嗎?有了這個,你只能添加最後一個學生在JList – mavroprovato 2013-03-12 14:54:01

+0

解決...對不起 – 2013-03-12 15:45:01

回答

0

正如所指出的那樣,您將重新實例化ListModel並將其設置爲JList以獲取結果集中的每條記錄,這意味着您將看到的唯一結果就是resultSet中的最後一條記錄。相反,你應該這樣做:

public void writeResultSet(ResultSet resultSet) throws SQLException { 

    DefaultListModel listModel = new DefaultListModel(); 

    while (resultSet.next()) { 

     String student_firstname = resultSet.getString("student_firstname"); 
     String student_middlename = resultSet.getString("student_middlename"); 
     String student_lastname = resultSet.getString("student_lastname"); 


     listModel.addElement("" + student_firstname + " " + student_middlename + " " + student_lastname); 

    } 

jList1.setModel(listModel); 

}