刷新JFrame中的JList

时间:2010-11-24 01:18:42

标签: java swing jlist

我有一个显示来自矢量的信息的JList。然后,用户可以添加和删除此向量中的信息。当从Vector中添加/删除项目时,是否可以刷新JFrame中的JList?目前我在做..

 list = new JList(names);
 jframe.add(new JScrollPane(list), BorderLayout.CENTER);

但这不会将JList刷新为任何新内容。我检查,我的矢量内容等确实改变了,但列表没有刷新。为什么?我该如何解决?

4 个答案:

答案 0 :(得分:28)

您不应该更新Vector。应该直接对ListModel进行更改,然后表将自动重新绘制。

如果您因为对Vector的更改而决定重新创建ListModel,那么您可以通过执行以下操作来更新列表:

list.setModel( theNewModel );

编辑:忘记Vector并将数据直接加载到DefaultListModel:

DefaultListModel model = new DefaultListModel();
model.addElement( "one" );
model.addElement( "two" );
JList list = new JList( model );

现在,无论何时需要更改数据,都可以使用addElement(),removeElement()或set()方法直接更新模型。该列表将自动重新绘制。

答案 1 :(得分:4)

修改Vector后,在Jlist上调用 updateUI

答案 2 :(得分:1)

我认为我找到了Jlist的图形解决方案'的解决方案。尝试在每次添加或删除Jlist所持有的模型元素后调用此方法。

Jlist_name.ensureIndexIsVisible(model_name.getSize());

答案 3 :(得分:0)

向量每次更改时都可以使用list.setListData(vector)