刷新JFrame中的JList

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

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

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

您不应该更新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()方法直接更新模型。 该列表将自动重新绘制。

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

Jlist_name.ensureIndexIsVisible(model_name.getSize());

修改Vector后,在Jlist上调用updateUI