`
lg_asus
  • 浏览: 190856 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

SwingUtilities的invokeLater和invokeAndWait

 
阅读更多
参考:
http://blog.csdn.net/bzwm/article/details/3895381

参考作者的例子和解释。

补充:SwingUtilities.invokeLater并没有自动开户一个线程去处理,API:Causes doRun.run() to be executed asynchronously on the AWT event dispatching thread. This will happen after all pending AWT events have been processed.可知invokeLater还是在event dispatching thread上执行的,并且是排在最位一个执行的。因此界面会卡住。
我们可以另开一个线程("工作线程")来执行来处理数据,并且在这个线程中调用swingutilities来更新UI。
invokeLater不要有操作数据的操作,尽量只有更新UI的操作。
invokeAndWait是等更新UI结束后再执行“工作线程”
分享到:
评论

相关推荐

    Swing线程之SwingUtilities.invoke

    除了`invokeLater`,Swing还提供了`invokeAndWait`方法,它会阻塞当前线程直到指定的任务完成。但是,通常推荐使用`invokeLater`,因为它非阻塞性质允许应用程序保持响应性,特别是在处理耗时操作时。 总的来说,...

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

    为了确保Swing组件的操作是在EDT中执行,Swing提供了`SwingUtilities.invokeLater(Runnable)`和`SwingUtilities.invokeAndWait(Runnable)`两个方法来帮助开发者解决线程安全问题。 - **SwingUtilities.invokeLater...

    swing框架详细讲解

    如果需要在非EDT线程中修改Swing组件,必须使用SwingUtilities的invokeLater或invokeAndWait方法。 SwingWorker是JDK 1.6引入的一个类,用于处理耗时任务。在doInBackground方法中执行计算密集型任务,然后通过...

    code3.txt dfgd

    SwingUtilities.invokeLater和SwingUtilities.invokeAndWait等方法提供了一种安全的机制,可以在非EDT线程中安全地执行Swing组件的操作。 ### Lambda表达式与回调接口 Lambda表达式是一种允许将代码块作为方法参数...

    javaSwing-2

    因此,开发者需要了解和使用SwingUtilities的invokeLater和invokeAndWait方法。 通过"ch9"、"ch7"、"ch6"、"ch8"这些章节,我们可以依次深入学习Swing的高级特性、事件处理机制、组件的使用以及布局管理等内容,...

    Swing组建中EventQueue的使用

    在这个例子中,`SwingUtilities.invokeLater()`被用来在EDT中创建和显示一个`JFrame`。如果不在EDT中执行这些操作,可能会导致界面无法正确显示或者出现其他未定义的行为。 总的来说,理解和正确使用`EventQueue`...

    《Java语言程序设计》课件及源代码_第9章 图形用户界面1和2

    因此,通常我们会使用SwingUtilities的invokeLater或invokeAndWait方法来确保所有对GUI的操作都在EDT中执行。 最后,第9章的第二部分可能涵盖了更高级的话题,比如对话框(JOptionPane)、拖放功能(Drag and Drop...

    java 记事本的实现

    因此,涉及UI更新的操作必须在EDT中执行,可以通过SwingUtilities的invokeLater或invokeAndWait方法实现。 10. **可扩展性**:一个完善的记事本程序可能还包含其他功能,如查找替换、撤销重做、复制粘贴等。这些...

    swing学习资源

    因此,你需要使用SwingUtilities的invokeLater或invokeAndWait方法来确保UI操作的正确性。 7. **国际化和本地化**:Swing支持多语言环境,开发者可以为不同的地区提供相应的资源文件,实现应用程序的国际化和本地化...

    Swing线程基础可用.pdf

    任务线程与Swing组件的交互必须在EDT中进行,通常通过`SwingUtilities.invokeLater`或`invokeAndWait`方法来实现。 Swing编程中应注意以下几点: - **禁止直接从其他线程访问UI组件**:这样做可能导致界面更新和...

    java GUI教程

    可以使用SwingUtilities的invokeLater和invokeAndWait方法来保证线程安全。 10. **国际化和本地化**:Java GUI支持多语言环境,你可以为不同的区域和语言创建资源文件,使程序能够适应不同的文化背景。 通过学习...

    java Swing 第二版.chm

    使用SwingUtilities的invokeLater或invokeAndWait方法可以确保操作在EDT上执行。 SwingWorker: SwingWorker类是处理耗时任务的工具,它允许在后台线程执行计算,同时在主线程更新UI。这样可以避免UI冻结,提升用户...

    Java Swing图形界面开发与案例详解及随书实例代码

    因此,你需要使用SwingUtilities的invokeLater或invokeAndWait方法来确保UI更新的正确性。 通过深入学习和实践Java Swing,你可以创建出高效、美观的桌面应用程序。本教程中的实例代码将帮助你更好地掌握Swing的...

    javaswing聊天

    当收到新消息时,通过Swing的异步方法(如SwingUtilities.invokeLater或invokeAndWait)在EDT中更新JTextArea的内容。 5. **错误处理**:良好的错误处理是任何程序的关键部分。需要捕获和处理可能的异常,例如网络...

    你所不知道的五件事情--改进Swing(译) - Jiangshachina

    为了确保UI更新操作能够在正确的线程中执行,Swing提供了一些方法,例如`SwingUtilities.invokeLater()`和`SwingUtilities.invokeAndWait()`。 2. **正确使用方法**: - 使用`SwingUtilities.invokeLater()`来异步...

    Swing简易教程

    为了确保界面的响应性和避免竞态条件,开发者需要使用SwingUtilities的invokeLater或invokeAndWait方法。 8. **Swing的高级特性**: Swing还提供了对话框(JOptionPane)、拖放支持、国际化和本地化、以及对...

    深入学习:JFC SWING—JAVA 基础类组件集

    可以使用 SwingUtilities.invokeLater 或 invokeAndWait 方法确保代码在正确的线程中执行。 10. **国际化(Internationalization)**:Swing 支持多语言应用,允许开发者轻松地为不同地区提供本地化版本。 深入...

    欣赏Swing的大厦结构(意外的发现)

    SwingUtilities提供了很多实用方法,如invokeLater和invokeAndWait,用于在事件调度线程中执行代码,确保GUI的正确更新。 此外,Swing还提供了JDesktopPane和JInternalFrame来实现MDI(多文档界面)应用程序,以及...

    Swing线程基础.pdf

    - 使用`SwingUtilities.invokeLater`或`invokeAndWait`方法将任务添加到EDT队列,确保在UI线程中安全地执行代码。 当事件发生时,EDT按照以下流程处理: 1. 事件调度线程从事件队列中取出事件。 2. 调用事件源组件...

    Swing速度慢和反映迟钝原因

    - **SwingUtilities.invokeLater和SwingUtilities.invokeAndWait**:这两个方法用于确保Swing组件只能在EDT中更新。`invokeLater`会在EDT的末尾执行指定的任务,而`invokeAndWait`则会阻塞当前线程,直到指定的任务...

Global site tag (gtag.js) - Google Analytics