2011-03-21 63 views
0
 Connection connection = newConnection.createConnection(); 
     Statement newStat = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     ResultSet res = newStat.executeQuery("SELECT contactName FROM Contact WHERE accountName='"+m+"'"); 
     Vector<String> temp = new Vector<String>(); 
     //res.first(); 
     while (res.next()){ 
      temp.add(res.getString("contactName")); 
     } 
     newStat.close(); 
     connection.close(); 
     customerContactList = new JList(temp); 
     repaint(); 

我有一個JList與帳戶名,選擇了帳戶時,就在旁邊就設有才能被按下一個按鈕調用上面的代碼。 該代碼應該獲取與該帳戶關聯的聯繫人姓名,並將其填充到JList中的 。這不會發生。 Jlist保持空白,我調試並且向量temp得到3個值並將它們存儲到新的jlist中,問題是JList不刷新。爪哇 - 如何更新JList的一次JFrame中已加載

我該如何刷新它?

非常感謝,我感謝任何幫助。 Kunal

回答

5

您創建的新JList尚未添加到任何容器,因此您必須將其添加到框架中,就像原始框架一樣,然後在框架上調用「validate()」 (當你添加/刪除組件到一個可見的窗口時總是必要的)。但是,最好在現有的JList上調用setListData() - 它會立即更新,而閃爍少。

+0

它的作品!當初始化組件時,我正在爲其他部件創建新的jList,這種方式似乎更有效。 感謝您的幫助。 :d – Kunal 2011-03-21 21:45:15

1

您可以使用ListModel來操縱JList中的數據。並且絕對不會在任何步驟創建新的JLists。您的JList與您的JFrame有界。現在,你可以在它裏面使用

JList list = new JList(); 
    ListModel model = list.getModel(); 

和修改模型中獲取數據,然後發送新模式回:

DefaultListModel listModel = new DefaultListModel(); 
    while (res.next()) { 
     listModel.addElement(res.getString("contactName")); 
    } 
    list.setModel(listModel);