如何使用DefaultListModel创建多个具有不同值的Jlists

问题描述:

我的代码有问题。 我有一个多维的字符串数组[] [],并希望创建它的列表。 因此,对于每个数组[]元素,我想要一个新的列表与它的值。例如,我有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对象*享模型的单个实例。 –

以前,您每次通过循环创建一个new JList。在你的新代码中,你并没有创建一个new模型,每一次通过循环,所以你只是每次增加更多的现有模型。

+0

你说得对。我怎么看不到这个。谢谢! :) – asgart

+0

有时很容易忽略这样的事情。很高兴我能帮上忙 :) –