swingworker处理中间结果的方法(swing项目实例)

技术如何实现SwingWorker的实例化本篇文章给大家分享的是有关如何实现SwingWorker的实例化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Sw

本文是关于如何实现SwingWorker的实例化。边肖觉得挺实用的,所以分享给大家学习。希望你看完这篇文章能有所收获。我们就不多说了。让我们和边肖一起看看。

SwingWorker示例融合SwingWorker:要使用SwingWorker类,必须首先实现它的一个子类。在子类中,您必须实现构造方法并包含您的长期操作。当实例化SwingWorker的子类时,SwingWorker会创建一个线程,但不会启动它。您必须调用SwingWorker对象的start方法来启动线程,然后start方法将调用您的construct方法。当需要构造方法返回的对象时,可以调用SwingWorker类的get方法。这是一个使用SwingWorker类的例子:

.//在main方法中:finalswingworker worker=newwinworker };worker.start.//在动作事件处理方法中:jooptions pane . showmessagedialog)

当程序的主方法调用start方法时,SwingWorker会启动一个新线程来实例化ExpensiveDialogComponent。主方法还构建了一个由窗口和按钮组成的图形用户界面。当用户单击按钮时,如果需要,程序将阻止,直到创建ExpensiveDialogComponent。然后程序显示一个包含ExpensiveDialogComponent的模式对话框。你可以在MyApplication.java找到整个过程。使用计时器类计时器类通过操作侦听器执行一次或多次操作。创建计时器时,可以指定操作执行的频率,还可以指定计时器的动作事件的侦听器。计时器启动后,将调用操作侦听器的actionPerformed方法来执行操作。计时器侦听器定义的actionPerformed方法将在事件调度线程中调用。这意味着您不必在其中使用invokeLater方法。这是一个使用Timer类实现动画循环的例子:

public class animatoraapplicationtimerextendsjframeimplementsactionlistener public voitstartanimationelse } public voitstoanimationpublic voitaction performed.}

在一个线程中执行所有用户界面代码有一些好处:组件开发人员不必对线程编程有很深的理解;像视点和支架这样的工具包中的所有组件都必须完全支持多线程访问,这使得扩展非常困难,尤其是对于不精通线程编程的开发人员来说。最近的一些工具包,比如SubArctic和IFC,都采用了类似Swing的设计。事件以可预测的顺序调度:由invokeLater排队的可运行对象从鼠标和键盘事件、计时器事件和绘图请求的同一队列中调度。在一些组件完全支持多线程访问的工具包中,变化无常的线程调度器会将组件的更改分散到事件处理过程中。这使得全面测试变得困难甚至不可能。更低的成本:试图小心地将工具包锁定在关键区域需要大量的时间和空间来管理锁。每当在工具包中调用可能在客户端代码中实现的方法时,工具包应该保存其状态并释放所有锁,以便客户端代码可以在必要时获得锁。当控件返回到工具包时,工具包必须重新获得锁并恢复状态。所有应用程序都必须承担这个代价,即使大多数应用程序不需要并发访问图形用户界面。这是SubArcticJavaToolkit对工具包中支持多线程访问问题的描述:我们的基本原则是,在设计和构建多线程应用程序时,必须格外小心,尤其是那些包含GUI组件的应用程序。线程的使用可能具有欺骗性。在许多情况下,它们可以被极度简化,使得设计“专注于单个任务的简单自治实体”成为可能。在某些情况下,它们确实简化了设计和编码。然而,在几乎所有的情况下,它们使调试、测试和维护变得困难,甚至不可能。

无论大多数程序员接受的实践,他们的经验和实践,或者我们用来帮助自己的工具,都不能用来处理不确定性。例如,当bug依赖于时间时,全面测试几乎是不可能的。特别是对于Java来说,一个程序应该运行在很多不同类型机器的操作系统平台上,每个程序都必须在抢占式和非抢占式调度下正常工作。由于这些固有的困难,我们敦促您三思是否绝对有必要使用线程。但是,在某些情况下,有必要使用线程,因此subArctic提供了线程安全的访问机制。本章讨论这种机制以及如何在独立的线程中安全地操作交互树。他们讨论的线程安全机制非常类似于SwingUtilities类提供的invokeLater和invokeAndWait方法。

以上就是如何实现SwingWorker的实例化。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157462.html

(0)

相关推荐

  • 怎么用C#开发超级账本Fabric

    技术怎么用C#开发超级账本Fabric本篇内容介绍了“怎么用C#开发超级账本Fabric ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读

    攻略 2021年11月26日
  • Spring AOP如何实现简单的日志切面

    技术Spring AOP如何实现简单的日志切面本篇文章给大家分享的是有关Spring AOP如何实现简单的日志切面,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看

    攻略 2021年10月27日
  • java转义字符正确使用方法(java转义字符是什么意思)

    技术Java中常见的转义字符有哪些本篇内容主要讲解“Java中常见的转义字符有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中常见的转义字符有哪些”吧!  在Ja

    攻略 2021年12月22日
  • 生成器与常见内置函数

    技术生成器与常见内置函数 生成器与常见内置函数异常捕获补充
    # 异常捕获的完整形式
    try:name
    except NameError as e:pass
    except Exception as e:p

    礼包 2021年11月23日
  • mysql索引最快的方法(mysql索引优化的几种方法)

    技术如何使MySQL的索引更高效这篇文章主要介绍如何使MySQL的索引更高效,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL中的索引MySQL中的InnoDB引擎使用B+Tree结构来存储

    攻略 2021年12月20日
  • 如何解析Linux内核虚拟机的安全扩展KVMSEC

    技术如何解析Linux内核虚拟机的安全扩展KVMSEC如何解析Linux内核虚拟机的安全扩展KVMSEC,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一

    攻略 2021年11月25日