`
chuanheng
  • 浏览: 15197 次
  • 性别: 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()方法在加载时执行,用于更新界面。

 

分享到:
评论

相关推荐

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

    Swing 线程的深入理解和 SwingWorker 基础知识介绍 Swing 是 Java 中的一种图形用户界面(GUI)工具包,用于创建桌面应用程序。然而,在使用 Swing 时,开发者经常会遇到线程相关的问题。本文将深入了解 Swing 线程...

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

    Swing线程的深入理解和SwingWorker基础知识介绍 Swing线程是Java程序设计中的一种重要概念,用于处理图形用户界面(GUI)中的线程问题。在本文中,我们将深入探讨Swing线程的理解和SwingWorker基础知识,并通过实例...

    Swingworker

    swing swingworker wingworker wingworker

    使用SwingWorker异步加载JTree

    这篇博客“使用SwingWorker异步加载JTree”详细介绍了如何利用SwingWorker来加载大型数据集到JTree组件,避免阻塞UI。 首先,我们需要了解JTree。JTree是Swing中的一个组件,它用来展示树形结构的数据,常用于文件...

    swingworker排序

    SwingWorker是Java Swing库中的一个关键组件,用于在后台线程执行耗时操作,同时保持用户界面(UI)的响应性。这个组件是解决Java GUI应用中多线程问题的有效工具,特别是在需要进行大量计算或者I/O操作时。在这个...

    SWT与SwingWorker的结合

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

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

    Java的Swing编程中,SwingWorker线程模式和顶层容器是构建响应式图形用户界面(GUI)的关键组件。在Swing中,正确地管理线程对于确保应用程序的性能和用户体验至关重要。以下是对这些概念的详细说明: 1. **初始...

    swing不确定进度条

    SwingWorker, Void&gt; worker = new SwingWorker, Void&gt;() { @Override protected Void doInBackground() throws Exception { // 执行耗时任务 Thread.sleep(5000); // 模拟耗时操作 return null; } @Override...

    An Alternative to SwingWorker.java-开源

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

    互联网程序设计实验二0001.docx

    本实验报告是基于互联网程序设计课程的第二个实验,主要目标是理解并掌握服务器一客户一线程通用技术框架和 SwingWorker,V&gt; 后台线程技术。 一、实验目的: 本实验的主要目的有两个:(1)理解并掌握服务器一客户...

    java 多线程编程

    `SwingWorker`有两个主要的方法:`doInBackground()`用于执行后台任务,`process()`和`done()`用于更新UI或处理结果。 4. **线程同步与通信**: 为了防止多个线程之间的数据竞争和不一致,Java提供了多种线程同步...

    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

    实验的目标是掌握SwingWorker类的应用,理解端口扫描的编程技巧,并进一步熟悉Swing界面设计。 SwingWorker类在Java中是一个用于在后台线程执行耗时操作的工具类,它允许在不影响用户界面的情况下进行计算,从而...

    swing 下载文件时的进度条

    SwingWorker, Integer&gt; worker = new SwingWorker, Integer&gt;() { @Override protected Void doInBackground() throws Exception { // 下载逻辑,包括网络请求和数据读写 // 每隔一段时间publish进度值 return ...

    Java开发中的线程安全选择与Swing

    `SwingWorker`类继承自`Worker`抽象类,并实现了`SwingWorker, V&gt;`接口,其中`T`表示worker线程产生的中间结果类型,而`V`则表示worker线程完成后返回的结果类型。 `SwingWorker`的关键方法包括: - `execute()`:...

    再论JavaSwing线程.pdf

    解决此问题的常用方法是使用Swing提供的异步机制,如`SwingUtilities.invokeLater()`或`SwingWorker`。这些工具允许开发者将耗时任务放在后台线程中执行,同时保持用户界面的响应性。然而,这些解决方案的正确实施...

    Eclipse编写的把网页保存成图片Demo

    import org.dje.jnativeswing.swingworker.SwingWorker; import org.jdesktop.swingx.JXWebBrowser; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.net....

    java 进度条的实现

    5. **SwingWorker**:SwingWorker是Swing为多线程设计的类,它可以异步执行任务并在后台线程中更新界面。在doInBackground()方法中执行耗时操作,然后在process()或done()方法中更新进度条。 ```java SwingWorker, ...

    Swing MVC 观察者 电子相册

    综上所述,Swing MVC模式、观察者模式、系统托盘和SwingWorker都是构建高效、用户友好的电子相册应用的关键技术。通过合理利用这些组件和设计模式,我们可以创建出既美观又实用的Java桌面应用。

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

    文章通过两篇前文铺垫,分别解释了Swing的线程规则和如何使用`SwingWorker`进行线程管理。在本文中,他着重介绍了如何利用异步模型来处理基于模型的组件,如`JTable`和`JTree`,以提高用户界面的响应性。 文章首先...

Global site tag (gtag.js) - Google Analytics