`
chuanheng
  • 浏览: 14847 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

SwingWorker

 
阅读更多

列如GUI加载图形文件,there may be a delay before the GUI appears;

如果该图形文件时加载的调度线程,图形用户界面可能暂时无法响应用户。

为了避免这些问题, TumbleItem 创建并执行一个实例 SwingWorker 从最初的线程。 

该对象的 doInBackground 方法,在辅助线程中执行,加载到一个图像 ImageIcon 数组,并返回对它的引用。

 然后 done() 方法在事件派发线程中执行,调用 done() 检索此引用,它分配给一个applet类字段名为 imgs 

 这使得 TumbleItem 构建图形用户界面立即加载,无需等待图像完成。

 

下面的代码是定义和执行 的SwingWorker 对象。

SwingWorker worker = new SwingWorker<ImageIcon[], Void>() {
    @Override
    public ImageIcon[] doInBackground() {
        final ImageIcon[] innerImgs = new ImageIcon[nimgs];
        for (int i = 0; i < nimgs; i++) {
            innerImgs[i] = loadImage(i+1);
        }
        return innerImgs;
    }

    @Override
    public void done() {
        //Remove the "Loading images" label.
        animator.removeAll();
        loopslot = -1;
        try {
            imgs = get();
        } catch (InterruptedException ignore) {}
        catch (java.util.concurrent.ExecutionException e) {
            String why = null;
            Throwable cause = e.getCause();
            if (cause != null) {
                why = cause.getMessage();
            } else {
                why = e.getMessage();
            }
            System.err.println("Error retrieving file: " + why);
        }
    }
};

 

 

 

 process() is only interested in the last value reported each time, using it to update the GUI

 process()方法在加载时执行,用于更新界面。

 

分享到:
评论

相关推荐

    Swingworker

    swing swingworker wingworker wingworker

    Swing线程的深入理解和SwingWorker基础知识介绍[参照].pdf

    Swing线程的深入理解和SwingWorker基础知识介绍[参照].pdf

    Swing线程的深入理解和SwingWorker基础知识介绍

    Swing线程的深入理解和SwingWorker基础知识介绍

    使用SwingWorker异步加载JTree

    NULL 博文链接:https://vearn.iteye.com/blog/344591

    SWT与SwingWorker的结合

    Swt一般情况不允许在另外一个线程中更新控件内容,此程序使用java swing的SwingWorker对swt的控件进行操作更新。对于喜欢使用SwingWorker更新Swing控件的人来说,也可以使用SwingWorker更新Swt控件

    swingworker排序

    作业:完善swingworker排序功能

    Java的Swing编程中使用SwingWorker线程模式及顶层容器

    主要介绍了在Java的Swing编程中使用SwingWorker线程模式及顶层容器的方法,适用于客户端图形化界面软件的开发,需要的朋友可以参考下

    An Alternative to SwingWorker.java-开源

    SwingWorker的替代品,用于在Swing中执行异步任务。 我们将SwingWorker.java与Action接口合并,生成AbstractAsynchronousAction.java。 此类的具体扩展可以用来代替任何Action。

    Swing线程的最后讨论 -- 利用异步模型

    本文介绍了修订过的SwingWorker类,并演示了和基于模型的组件(model-based components)如JTable和JTree同时使用线程。 要理解本文呈现的材料,熟悉SwingWorker和JTable和JTree组件会有所帮助。你可以在存档索引中...

    swing-worker-1.1.jar

    Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker at com.android.draw9patch.Application$1.run(Application.java:48) at java.awt.event....

    互联网程序设计实验六.doc

    "课程名称:互联网程序设计 "年级: "实验日期: " "姓名: "学号: "班级: " "实验名称:实验六 TCP文件传输/端 "教师评语(成绩): " "口扫描器(2学时) " " 一、实验目的及要求 (1)理解掌握SwingWorker类的...

    swing-worker-troubleshooting:回购以解决SwingWorker的问题

    Swing工人故障排除 在这里,我们有一个简单的Swing应用程序,现在需要添加一个耗时的任务,并且需要在运行时更新进度条。 当前解决方案完全在EDT上运行( AnalysisService类中100%打包),因此阻止进度条被更新/...

    线程超时死掉

    Future的实现类有java.util.concurrent.FutureTask即 javax.swing.SwingWorker,V&gt;。通常使用FutureTask来处理我们的任务。FutureTask类同时又 实现了Runnable接口,所以可以直接提交给Executor执行。使用FutureTask...

    ProcessBar 2种经典实现

    NULL 博文链接:https://chenhailong.iteye.com/blog/1312202

    Java并发编程实战

    9.3.3 SwingWorker165 9.4 共享数据模型165 9.4.1 线程安全的数据模型166 9.4.2 分解数据模型166 9.5 其他形式的单线程子系统167 第三部分 活跃性、性能与测试 第10章 避免活跃性危险169 10.1 死锁169 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例149 使用SwingWorker类完成耗时操作 194 第7章 反射与异常处理 195 7.1 反射的基础 196 实例150 实例化Class类的5种方式 196 实例151 获得Class对象表示实体的名称 197 实例152 查看类的声明 198 实例153 查看类...

    swing不确定进度条

    不确定某个程序运行多久,用进度条来监测,如果进度条监测到运行结果结束了,就退出进度条,否则以一种不确定的状态等待。

Global site tag (gtag.js) - Google Analytics