2014-11-01 65 views
-1

因此,我有一个JList,可以在调用方法时添加数据。我希望能够刷新JList中的数据,但每次尝试从JList中移除时,都会将新数据附加到旧数据中。所以基本上当按钮被按下时,它调用方法并且JList应该被更新(旧数据被清除并且新数据被读入)。清除JList

我尝试清除模型中的数据,当我请求大小时,它说它是0,但它仍然附加。我也尝试从列表本身删除。驱使我坚果,任何帮助将不胜感激。这基本上就是我在做的,每一次调用方法都会改变“新数据”。

DefaultListModel model = new DefaultListModel(); 
JList list = new JList(model); 

public void method(){ 
if(model.size() > 0){ 
model.removeAllElements(); 
model.clear(); 
list.removeAll(); 
} 

model.addElement("new Data"); 
model.addElement("new Data"); 

} 
+0

请提供您的完整代码;你在这里写的应该是有效的。你正在做的事情,我们没有看到。 – alterfox 2014-11-01 01:24:25

回答

3

首先,不叫list.removeAll,而这是不可能做任何事情,这不是明智的做法惹组件这种方式。

最简单的解决方法就是更换JListListModel ...

list.setModel(new DefaultListModel()); 

,或者在你的情况下,类似...

model = new DefaultListModel(); 
list.setModel(model); 
model.addElement("new Data"); 

如果这是不工作,那么你可能会隐瞒你的变量,在这种情况下,考虑提供一个runnable example这表明你的问题。这将导致更少的混淆和更好的反应

+0

非常感谢您的回复。当我刚添加第一个解决方案时,我的JList被清除,但是当我使用您提供的第二块代码时,数据与旧数据混合在一起。 – jjamzn 2014-11-01 01:18:44

+1

真的没有必要创建一个新的模型。在现有的代码上调用'clear'应该就够了,但OP代码中没有提供的东西。 – alterfox 2014-11-01 01:36:37

+0

我提供的代码几乎是相同的,减去添加数据部分,在这种情况下这是不必要的。任何其他想法? – jjamzn 2014-11-01 01:41:49