栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在自定义对话框面板中,如果没有Thread.sleep(),SwingWorker不会更新JProgressBar。

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在自定义对话框面板中,如果没有Thread.sleep(),SwingWorker不会更新JProgressBar。

我想

SwingWorker
用a
JProgressBar
内追踪我的进度
JDialog
。但是,我的
SwingWorker
班级无法处理我的自定义
DialogPanel
班级。为了获得相同的结果,
ProgressMonitor
最好使用默认类。

我已通过构造函数将传递

ProgressMonitor
SwingWorker

private final File f;private final ProgressMonitor pmpublic FileLoadWorker(File f, ProgressMonitor pm){    this.f = f;    this.pm = pm;}

并更改了以下方法:

@Overridepublic void done() {    try     {        pm.setNote(get());    }     catch (Exception e)    {        e.printStackTrace(System.err);        System.out.println("error");    }}@Overrideprotected void process(List<String> chunks){   pm.setNote(chunks.get(chunks.size() - 1));}

任务

propertyChangeListener
更改如下:

final FileLoadWorker worker = new FileLoadWorker(f, pm);worker.addPropertyChangeListener(new PropertyChangeListener(){    @Override    public void propertyChange(final PropertyChangeEvent evt)    {        if("progress".equalsIgnoreCase(evt.getPropertyName()))         { pm.setProgress((int) evt.getNewValue());        }        if("state".equals(evt.getPropertyName()))         { SwingWorker.Statevalue s = (SwingWorker.Statevalue) evt.getNewValue(); if(s.equals(SwingWorker.Statevalue.DONE)) {     pm.setProgress(100);     pm.close();     Toolkit.getDefaultToolkit().beep(); }        }        if(pm.isCanceled())        { pm.close(); worker.cancel(true);        }    }});worker.execute();

感谢rashgod提供有关该

state
物业的答案和评论。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号