`

SWT界面Thread以外的线程如何控制界面变化

    博客分类:
  • Java
阅读更多

在SWT程序中,SWT会自动创建一个用户界面线程,非用户界面线程不能直接操作.

 用户界面线程。
因此经常抛出如下异常:

Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access

 

 

要想在另外一个线程中尝试修改用户界面,应采用以下方法:

 

1. 首先定义一个线程。例如

 

Runnable runnable = new Runnable() {
      public void run() {
          // 你改界面的代码
    }
};

 

2. 通过shell.getDisplay(),或直接引用display来将操作页面线程。

 

 

display.syncExec(runnable); 
或者
shell.getDisplay().syncExec(runnable); 

 

 

 

引用文档说明:

public void syncExec(java.lang.Runnable runnable)
Causes the run() method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. The thread which calls this method is suspended until the runnable completes.
Parameters:
runnable - code to run on the user-interface thread.

 

 

 

 
 

 

 

分享到:
评论

相关推荐

    swt页面后台多线程接受ModBUS协议Socket通讯的数据

    解析后的信息可以存储在内存中,或者更新到SWT界面的组件上,如表格或标签,让用户实时查看接收到的信息。 综上所述,这个项目涉及到多个技术领域,包括图形用户界面的设计、网络通信、多线程以及工业控制协议的...

    局域网聊天 SWT Java 多线程问题已经解决

    本主题将深入探讨如何利用SWT(Standard Widget Toolkit)和Java来构建一个局域网内的聊天应用,并解决其中涉及的多线程问题。SWT是Eclipse基金会提供的一个开源GUI库,它为Java开发者提供了与操作系统更紧密集成的...

    SWT线程教程

    SWT通过严格的线程控制机制来保证UI组件的安全性和稳定性。了解和掌握SWT线程的管理方法对于开发高质量的桌面应用程序至关重要。开发者应熟练掌握`SyncExec`的使用,以及如何合理地创建和使用Worker线程来处理耗时的...

    SWT并发例子(后台耗时线程)

    在这个并发例子中,我们关注的是如何在SWT应用中正确处理耗时的后台任务,以避免阻塞用户界面(UI)线程,即事件调度线程。 首先,了解Java中的线程模型至关重要。Java应用程序通常由主线程运行,这个主线程负责...

    swt 多线程

    首先,我们需要理解UI线程,也称为事件调度线程或AWT/SWT线程,它负责处理所有的用户界面更新和事件处理。在SWT中,所有的GUI操作必须在UI线程中进行,以避免界面出现闪烁、滞后或不一致的状态。因此,当我们需要在...

    swt线程冲突与解决

    在使用SWT(Standard Widget Toolkit)进行图形界面开发时,开发者往往会遇到一个常见的问题——线程冲突。由于SWT组件的设计原则是基于单线程模型,即所有的UI操作必须在UI主线程中执行,因此在多线程环境下容易...

    swt源码以及jar

    在多线程方面,SWT提供了一个安全的线程模型,确保所有的UI更新都在主线程(通常称为UI线程或Event Dispatch Thread)中执行。这避免了因多线程操作界面导致的竞态条件和死锁问题。开发者可以通过`Display.syncExec...

    基于swt的小软件

    例如,使用`Display.asyncExec`或`Display.syncExec`方法在GUI线程中更新界面,确保界面操作的线程安全。 **Bank子文件** 在"Bank"这个子文件中,很可能是实现了一款与银行相关的模拟软件,可能包括账户管理、交易...

    java swt播放器

    Java SWT 播放器是一种基于 Java 的图形用户界面(GUI)应用程序,它利用了 SWT(Standard Widget Toolkit)库来创建具有本地外观和感觉的用户界面。SWT 是 Eclipse 开发框架的一部分,提供了丰富的控件集,使得...

    基于SWT的枪战游戏(主要是Canvas)

    SWT提供了Display和Thread类来支持异步操作。 8. **优化**:考虑到性能,开发者可能需要对代码进行优化,例如减少不必要的重绘、缓存重复计算的结果、使用位图操作等。 9. **社区支持**:SWT有一个活跃的社区,...

    java swt 跳棋程序 源码

    Java SWT(Standard Widget Toolkit)是Java编程环境中用于创建桌面应用程序的一种图形用户界面(GUI)工具包,它是Eclipse项目的组成部分。SWT 提供了与操作系统底层更直接的交互,使得开发者可以创建性能优异且与...

    SWT综合教程及安装指导

    1. GUI线程:在SWT中,所有对GUI的操作必须在事件调度线程(Event Dispatch Thread,EDT)中进行,以保证界面的同步更新和避免数据竞争。 2. 回调机制:使用`Display.asyncExec`或`Display.syncExec`方法来确保在...

    swt form

    在IT领域,AWT、SWT以及Swing是构建Java图形用户界面(GUI)应用程序时经常使用的技术。这三个框架各自有不同的设计理念和实现方式,它们在事件处理、资源管理和API设计等方面具有独特的特点。以下是对这些知识点的...

    java-SWT-socket.zip_SWT_SWT socket

    4. **线程管理**:因为UI更新和Socket通信通常需要在不同的线程中进行,理解Java多线程概念,如`Thread`或`Runnable`接口,确保UI的响应性和通信的并发性。 5. **事件驱动编程**:在SWT中,事件处理是关键。当用户...

    [原创]SWT 深入内幕之消息机制探秘

    3. **Display和Thread**:SWT中的所有UI更新都必须在Display线程中执行,以保持UI的一致性。因此,非Display线程生成的事件通常会被放入一个队列,待Display线程空闲时再进行处理。 4. **EventTable**:SWT的Event...

    SWT 项目包

    通过结合Java的Event Dispatch Thread(EDT)和SWT,可以创建高性能、线程安全的应用程序。 总的来说,"SWT项目包"是一个包含SWT库和相关资源的集合,适用于Java开发者希望在他们的应用程序中使用原生外观和感觉的...

    1初学Java多线程之线程简介.pdf

    eventdispatchthread(事件分派线程,EDT)是Java中专门用于处理GUI事件的线程,它保证了GUI操作的线程安全。 需要注意的是,由于扫描文本的错误和不完整,可能会影响我们对文档内容的完全理解,但上述介绍的内容是...

    java SWT排序系统开发

    通过结合上述的排序算法和SWT界面设计,我们可以创建一个功能完备的排序系统,用户可以在界面上输入或导入数据,选择不同的排序算法,然后观察排序过程或结果。同时,为了提高用户体验,还可以添加性能指标显示、...

    SWT做的窗体抖动

    在Java中,我们可以使用Display.timerExec()或Thread.sleep()方法来控制时间间隔,然后改变窗口的位置或大小,形成连续的变化。 4. **代码实现**:在提供的文件`WindownChange.java`中,很可能是实现了窗体位置的...

    java swt飞机大战

    4. **线程与定时器**:为了实现游戏的动态效果,开发者可能使用了Java的Thread类或者 SWT 提供的Display.timerExec()方法来创建定时器,使得游戏画面能够定时更新。 5. **事件处理**:利用SWT的Listener接口或...

Global site tag (gtag.js) - Google Analytics