转自 http://blog.csdn.net/ecjtuxuan/article/details/2125023

怎么解决SWT多线程错误:Caused by: org.eclipse.swt.SWTException: Invalid thread access

我这几天研究JAVA做MSN,下载的示例都是在控制台下显示的,现在要做一个桌面MSN,要在界面上显示运行情况,比如,登录时,在文本框中显示"正在登录,请稍后....",登录成功后显示"登录成功....."等,以及其它一系列事件都要在界面上显示..

我用的是SWT Designer来做界面的,界面上有账号和密码输入框,登录及退出按钮,以及显示运行刻录的文本框.

现 在只是做了登录,要在文本框里显示登录情况,网上的代码都是通过System.out.println在控制台里显示,而现在我要将记录显示在文本框里, 开始时,我就直接按照调用类方法的办法调,可是总出现Caused by: org.eclipse.swt.SWTException: Invalid thread access这个错误,我查询后知道,这是因为SWT界面线程不能在其它线程里进行操作等.

由于以前没做过JAVA桌面程序,也没做过JAVA多线程,所以花了我一天多的时间,都没搞定.下午,在utopian的帮助下,才搞定,太多的道理我也说不清,呵呵,我对JAVA也不是很熟悉,只是在JSP里用到了点皮毛而已.我只说一下我的最后解决方法

我就是在那个新线程(其实是一个处理监听事件的接口对象)需要修改界面的地方,那一段代码包起来,比如在我这个MSN的处理对象中,有一个消息是登录成功的消息

原来在控制台下显示消息的代码:
  /**
   * 登录成功后执行该方法
   */
  public void loginComplete(MsnFriend own) {
   System.out.println(own.getLoginName() + " Login OK");
    }

而想要界面里显示,则改成:
  /**
   * 登录成功后执行该方法
   */
  public void loginComplete(MsnFriend own) {
    Display.getDefault().syncExec(new Runnable() {
    public void run() {
    allTxt.setText("登录成功....");
    }
    }); 
   }

开始我只是写了allTxt.setText("登录成功....");这行代码,就一直报那个错,后来,改成    
   Display.getDefault().syncExec(new Runnable() {
    public void run() {
    allTxt.setText("登录成功....");
    }
    }); 
   这样就没问题了,也就是说,在非SWT线程的线程里想要修改SWT界面,都要通过上面类似的办法来做,不然就会报错的

呵呵,就是这样,问我为什么,我也说不清,呵呵,也不敢乱说,怕误人子弟啊,如果你知道的话,就详细一点告诉我吧,也让大家来学习和分享你的知识

org.eclipse.swt.SWTException: Invalid thread access问题解决方法的更多相关文章

  1. 解决Eclipse异常关闭后重启报 org.eclipse.swt.SWTException: Invalid thread access 的问题

    . . . . . 很久没有写博客了,最近实在是太忙,一直想写点干货,但是一直没静下心来学习. 今天又在加班忙碌之中,结果谁知道越忙碌越出问题.先是 weblogic 没有正常启动,凭经验第一反应就是 ...

  2. SWT中的多线程(Invalid thread access)

    最近在学习swt的东西,遇到一个问题,特转录如下. SWT异常: org.eclipse.swt.SWTException: Invalid thread access 在创建SWT界面的线程之外的线 ...

  3. myeclipse 8.5打开文件Could not open the editor: Invalid thread access 异常

    最近打开了一个好久没用的myeclipse 8.5下的工作区间,导入一个项目,想打开文件编辑提示Could not open the editor: Invalid thread access

  4. org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed

    org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed 开发环境为ecli ...

  5. Package CJK Error: Invalid character code. 问题解决方法--xelatex和pdflatex编译的转换

    Package CJK Error: Invalid character code. 问题解决方法--xelatex和pdflatex编译的转换 解决方法:添加格式说明信息 将下面语句: \docum ...

  6. j2ee、mvn、eclipse、Tomcat等中文乱码问题解决方法

    一.更改jdk默认编码为UTF-8,保证启动的JVM不会出现中文乱码问题 1.在编译的时候,如果我们没有用 -encoding 参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们 ...

  7. eclipse打开jar包出现乱码问题解决方法

    今天做项目时候,用eclipse打开.class文件出现乱码问题.jar编码和本地编辑器编码格式不对造成的错误. 首先我们打开eclipse,点击菜单下的window-->preferences ...

  8. NetBeans invalid jdkhome specified 问题解决方法

    JDK的路径变化会导致 NetBeans 启动时出现错误: 解决办法: There's is an easy way to fix this. Navigate to your NetBeans in ...

  9. org.eclipse.swt.custom.StyledText.getScrollbarsMode()I

    错误: org.eclipse.swt.custom.StyledText.getScrollbarsMode()I 解决方法: 1 卸载,并手工清除myeclipse全部文件 2 重新安装myecl ...

随机推荐

  1. android程序崩溃后重启

    有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问 ...

  2. JDK 7中的文件操作的新特性

    文件系统综述 一个文件系统在某种媒介(通常是一个或多个硬盘)上存储和组织文件.如今的大多数文件系统都是以树状结构来存储文件.在树的顶端是一个或多个根节点,在根节点一下,是文件和目录(在Windows系 ...

  3. Android初级教程理论知识(第十章Fragment与动画)

    Fragment 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fra ...

  4. Spring中Bean多种实现切换方案

    一个公共工程中的Spring配置文件,可能会被多个工程引用.因为每个工程可能只需要公共工程中的一部分Bean,所以这些工程的Spring容器启动时,需要区分开哪些Bean要创建出来.另一种场景是:想通 ...

  5. 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  6. Chapter 2 User Authentication, Authorization, and Security(1):选择Windows和SQL 身份验证

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38657111,专题目录:http://blog.csdn.net/dba_huangzj ...

  7. 分布式进阶(九)Ubuntu下使用nsenter进入Docker容器

    使用nsenter进入Docker容器 Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH.如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可.当我启动 ...

  8. 4.2、Libgdx各个模块概览

    (原文:http://www.libgdx.cn/topic/34/4-2-libgdx%E5%90%84%E4%B8%AA%E6%A8%A1%E5%9D%97%E6%A6%82%E8%A7%88) ...

  9. Unity UGUI实现图文混排

    目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏 ...

  10. 网络小白之WAN与LAN的区别

    剑指Offer--网络小白之WAN与LAN的区别 基本作用 wan接口是外网接口,是用来连接互联网或局域网等外部网络的. lan接口是内网接口,是用来连接计算机终端或其他路由器等终端设备的. 举例 w ...