2016-11-14 72 views
0

我有一个字符串数组,我想动态应用为JList中的项目。数组中的项目会频繁更改,因此Jlist模型也需要更改。这是什么,我现在有一个例子:使用for循环设置JList值

listAvail = new JList(); 
    listAvail.setBorder(
      new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); 
    listAvail.setModel(new AbstractListModel() 
    { 
     String[] values = new String[] { "Feature 1", "Feature 2", "Feature 3", "Feature 4", 
       "Feature 5" }; 

     public int getSize() 
     { 
      return values.length; 
     } 

     public Object getElementAt(int index) 
     { 
      return values[index]; 
     } 
    }); 
    scrollPane.setViewportView(listAvail); 

我想是这样的,以替换代码:

listAvail = new JList(); 
    listAvail.setBorder(
      new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); 
    listAvail.setModel(new AbstractListModel() 
    { 

     String[] values = new String[5]; 

     for (int i = 0; i < 5; i++) 
     { 
      values[i] = "Feature" + i; 
     } 


     public int getSize() 
     { 
      return values.length; 
     } 

     public Object getElementAt(int index) 
     { 
      return values[index]; 
     } 
    }); 
    scrollPane.setViewportView(listAvail); 

我在做什么错?

+0

1)为了更好地提供帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 2)*“我做错了什么?”*发生了什么问题?假装我们不坐在电脑前,不介意读者。你期望会发生什么?究竟发生了什么? –

+0

嗨,我建议你看看[这些教程](http://www.dickbaldwin.com/java/Java209.htm)(他们肯定帮助我了解了很多这些JThings,我可以进一步因为我认为你误解了JList的使用以及它们的ListModel是什么,所以教你如何通过它们让自己感到厌烦)。 – Feillen

回答

2

不要创建自定义ListModel。您可以使用DefaultListModel。它有像add(...)remove(...)这样的方法,允许您动态更新数据。

+0

这就是我应该一直在做的事情。我非常感谢帮助! – Chris