2016-09-23 70 views
1

我的代碼有問題。 我有一個多維的字符串數組[] [],並希望創建它的列表。 因此,對於每個數組[]元素,我想要一個新的列表與它的值。例如,我有4個列表。列表1中有3個值,列表2中有1個值,列表3中有4個值,列表4中有2個值。 這個工作正常,當我只使用JList。在那裏,我對數組的每個值都它的價值:如何使用DefaultListModel創建多個具有不同值的Jlists

protected static JComponent getButtonCluster() { 
    contentPanel.removeAll(); 
    contentPanel.setLayout(new GridLayout(0,2, 5, 5)); 
    contentPanel.setBorder(new EmptyBorder(10,0,0,0)); 
    for (int i=0; i < StringArray.length; i++) { 
     listbox = new JList(StringArray[i]); 
     contentPanel.add(listbox); 
    } 
    return contentPanel; 
} 

但現在我不得不只JList的到DefaultListModel改變,因爲我想通過點擊值更改數值。 現在所有列表都有數組的所有值。所以4個盒子都有10個元素。

 final DefaultListModel<String> model = new DefaultListModel<String>();   
     for (int i=0; i < StringArray.length; i++) { 
     for (int j=0; j < StringArray[i].length; j++) { 
      model.addElement(StringArray[i][j]); 

      if((StringArray[i].length -1)== j) { 
      listbox = new JList<String>(model); 
      contentPanel.add(listbox); 

      listbox.addMouseListener(new MouseAdapter() { 
        public void mouseClicked(MouseEvent e) { 
         if (e.getClickCount() == 2) { 
          //Value Change part....... 
          } 
        } 
      }); 
      } 
     } 

我怎樣才能解決我的問題,使每個列表都有它自己的價值觀?

+0

我看到你編輯你的帖子,因爲我發佈了我的答案,但我的答案仍然有效。新的DefaultListModel ();'在循環之外,因此您將在所有JList對象中共享模型的單個實例。 –

回答

0

以前,您每次通過循環創建一個new JList。在你的新代碼中,你並沒有創建一個new模型,每一次通過循環,所以你只是每次增加更多的現有模型。

+0

你說得對。我怎麼看不到這個。謝謝! :) – asgart

+0

有時很容易忽略這樣的事情。很高興我能幫上忙 :) –

相關問題