在 JFrame 中刷新 JList

2022-09-01 14:06:24

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

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

但这不会将JList刷新为任何新内容。我已经检查了,我的矢量内容等确实发生了变化,但列表没有刷新。为什么?我该如何修复它?


答案 1

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

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

list.setModel( theNewModel );

编辑:忘记矢量并将数据直接加载到DefaultListModel中:

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

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


答案 2

修改 Vector 后,在 Jlist 上调用 updateUI


推荐