2010-10-02 65 views
1

好的,所以我正在做一個家庭作業,我正在使用SWING爲Java項目製作一個GUI,並且我遇到了JList的麻煩。超級簡單的java swing jlist問題,我只是無法弄清楚!

我有一個客戶對象,我已經做了設置屬性,我想將對象添加到TreeMap中。我想連接Treemap,以便映射中的任何和所有對象都將在JList內部填充(名稱屬性)。

我已經做了很多四處尋找,並從頭開始編寫這些東西,但很少涉及Swing實現。我將我的客戶對象放入我的地圖中,然後我想讓我的JList反映地圖的內容,但我不知道如何將其掛接。

customers.put(c.getName(), c); 
    this.customerList.(What can I do here? add Customer object?? I can't find what I need); 

感謝您的幫助!

+0

你應該看看swing教程(http://download.oracle.com/javase/tutorial/uiswing/components/list.html)。 – tangens 2010-10-02 15:39:49

回答

1

您需要創建一個自定義列表模型,該模型返回放入JList的每一行的對象。 TreeMap不能用索引訪問,所以你需要別的東西。所以,總的想法是這樣的:(從JList的javadoc):

ListModel bigData = new AbstractListModel() { 
    ArrayList customers; 
    public int getSize() { return customers.size() } 
    public Object getElementAt(int index) { return customers.get(index); } 
}; 

JList bigDataList = new JList(bigData); 

這樣當你更新你的收藏,只需撥打revalidate()repaint()在JList和將太更新其內容。

1

,所以我工作的一個功課 分配

那麼究竟什麼是關於分配?您已經給我們提供了您嘗試的解決方案,但由於我們不知道實際需求,因此我們無法確定您是否處於正確的軌道上。

你是否被迫使用TreeMap來存儲對象?因爲你不能直接訪問對象,所以這不是一個用於ListModel的好集合。

或者僅僅是關於顯示JList中的對象的數據的分配?如果是這樣,那麼你可以使用DefaultListModel。您只需要覆蓋自定義對象的toString()方法,使列表中顯示「name屬性」。