我有一个JList,我使用DefaultListModel来存储列表条目。 我在该面板上有一个按钮。单击该按钮时,我向DefaultListModel添加新条目。
按钮actionPerformed:
我的问题是,在我对我的DefaultListModel进行操作后,JList的内容没有改变,我想知道在对ListModel进行更改后,是否需要在JList上调用一种刷新方法?
public void actionPerformed(ActionEvent e) {
ModifyXMLFile.create(FileList.listModel);
FileList.fileList1.revalidate();
}
JList类:
public class FileList {
public static DefaultListModel listModel;
public static WebList fileList1 = null;
public static Component getGui(File[] all) {
listModel = new DefaultListModel();
for(File file:all){
listModel.addElement(file);
}
final WebList fileList = new WebList(listModel);
fileList1=fileList;
fileList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fileList.setCellRenderer(new FileRenderer(!vertical));
fileList.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
});
}
答案 0 :(得分:3)
尝试调用DefaultListModel
protected void fireContentsChanged(Object source, int index0, int index1)
答案 1 :(得分:3)
1)删除代码行panel.updateUI();
此代码行约为Look And Feels
2)Swing is single threaded并且必须在EDT上对Swing GUI进行更新,否则GUI的内容或更改不可见或内容未刷新或冻结
3)您已查看SwingWorker在后台任务上加载JList's Item
,然后从SwingWorker
输出到GUI将在EDT上完成