我有一个显示来自向量数据的JList。用户可以添加和删除此向量中的信息。当向量中添加或删除条目时,是否可以刷新JFrame中的JList?目前我的做法是...
list = new JList(names);
jframe.add(new JScrollPane(list), BorderLayout.CENTER);
但这并没有将JList刷新为任何新内容。我已经检查过我的向量内容等确实发生了改变,但是列表没有刷新。为什么?我该怎么修复它?
我有一个显示来自向量数据的JList。用户可以添加和删除此向量中的信息。当向量中添加或删除条目时,是否可以刷新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 上调用 updateUI。
我认为我找到了解决JList图形“刷新”的方法。在每次添加或删除JList所持有的模型元素后,请尝试调用此方法。
JList_name.ensureIndexIsVisible(model_name.getSize());
每次向量变化时,您可以使用list.setListData(vector)
vector
是什么? - aBnormaLz