2009-10-19 59 views
1

我一直在尋找Java API,但是沒有運氣來解決這個問題。在啓動JList之後,是否有任何方法可以替換或重新加載「數據」字符串?我也一直在尋找和JComboBox一樣的東西。重新分配JList&JComboBox數據

String[] data = {"one", "two", "three", "four"}; 
JList dataList = new JList(data); 

回答

3

您正在使用JList的實用程序構造函數之一,該函數接受一個數組。該列表由ListModel支持。該實用程序的構造函數中使用以下步驟創建AbstractListModel上的實現:

new AbstractListModel() { 
      public int getSize() { return listData.length; } 
      public Object getElementAt(int i) { return listData[i]; } 
} 

其中listData將是你data集。你可以做同樣的事情並將它傳遞給dataList.setModel()。如果這不僅僅是一個原型,你可能會得到最好的服務,創建你自己的,完整的ListModel實現。請參考JList tutorial from Sun

JComboBox有點簡單,因爲DefaultComboBoxModel類有一個構造函數,它將Object作爲參數。要替換那裏的數據,你可以簡單地打電話:

myComboBox.setModel(new DefaultComboBoxModel(data)); 
+0

謝謝akf。這使事情變得更加清晰。我一直在尋找如何更換陣列... – 2009-10-19 13:07:54

+0

謝謝阿剋夫,讓它一切正常! – 2009-10-19 13:57:24

2

列表數據存儲在ListModel中(可通過get/set Model方法訪問)。你只需要創建一個新的ListModel(嗯,一個ListModel的實現),並使用它的setModel方法將它傳遞給JList。

+0

它怎麼是最初設置一個字符串呢? – 2009-10-19 13:03:49