刷新JFrame中的JList

Ski*_*zit 20 java swing jlist

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

 list = new JList(names);
 jframe.add(new JScrollPane(list), BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)

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

cam*_*ckr 28

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

如果由于对Vector的更改而决定重新创建ListModel,则通过执行以下操作来更新列表:

list.setModel( theNewModel );
Run Code Online (Sandbox Code Playgroud)

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

DefaultListModel model = new DefaultListModel();
model.addElement( "one" );
model.addElement( "two" );
JList list = new JList( model );
Run Code Online (Sandbox Code Playgroud)

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


ger*_*rdw 5

修改Vector后,在Jlist上调用updateUI