博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Atitit.swt 线程调用ui控件的方法
阅读量:6651 次
发布时间:2019-06-25

本文共 1485 字,大约阅读时间需要 4 分钟。

Atitit.swt 线程调用ui控件的方法

 

 

1 SwingUtilities.invokeLater 1

2 display.asyncExec方法 1

3  display.timerExec(500,timer); 2

4 、但有时候并不一定要程序执行时就要定时检测,有时需要外部事情激发这就出现了第2种解决方案,写一个内置类,可以放在事件监听的方法中,然后激发: 2

5 参考 3

 

  

 

  SwingUtilities.invokeLater(new Runnable(){

                        @Override                        public void run() {
                            label2.setText(x + "");                        }                    });

这个问题我也碰到过,有个updateUI()方法,可以解决。

 

display.asyncExec方法

SWT提供的display.asyncExec方法,发现其实质根本不是另开一个线程,只是把run方法调用了一次,所以导致调用Thread.sleep时程序就会死掉。

有时候是另外一个线程

 

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

 display.timerExec(500,timer);

1.  final Runnable timer = new Runnable () {  

2.         int count = 0;  

3.         public void run () {  

4.           synchronized (this) {  

5.             try {  

6.               text.setText(  

7.                 Integer.toString(count++));  

8.             } catch (Exception e) {  

9.               e.printStackTrace();  

10.             }  

11.           }  

12.         }  

13.       };  

14.     while (shell != null && !shell.isDisposed()) {  

15.         

16.       if (!display.readAndDispatch())  

17.         display.sleep();  

18.       else   

19.         display.timerExec(500,timer);  

 

 

、但有时候并不一定要程序执行时就要定时检测,有时需要外部事情激发这就出现了第2种解决方案,写一个内置类,可以放在事件监听的方法中,然后激发:

1.  new Thread() {  

2.       private Runnable cmd = new Runnable() {  

3.         public void run() {  

4.           shell.setText(String.valueOf(counter++));  

5.         }  

6.       };  

7.       public void run() {  

8.         while (true) {  

9.           try {  

10.             Thread.sleep(2000);  

11.           } catch (InterruptedException e) {  

12.             return;  

13.           }  

14.           display.asyncExec(cmd);  

15.         }  

16.       }  

17.     }  

18.     .start();  

 

 

参考

SWT中定时器的一种特殊实现方式_SWT中线程互访时display.asyncExec_display.syncExec...程序死掉无响应的解决办法 - fm2005的专栏 博客频道 - CSDN.NET.html


你可能感兴趣的文章
获取时间戳,以秒为单位
查看>>
ASP入门(十)-Session对象
查看>>
RESTEasy使用json返回的例子
查看>>
DNS相关配置文件
查看>>
对于Json和对象转换的学习
查看>>
提高 web 应用性能之 JavaScript 性能调优(转)
查看>>
winform datagridview 重新绘制datagridview的边框。
查看>>
.NET简谈组件程序设计之(初识远程调用)
查看>>
Chromium Embedded Framework中文文档 (使用C API)
查看>>
Java中获取程序路径
查看>>
Oracle错误 ora-12514 解决方法
查看>>
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)
查看>>
使用jQuery email check插件开发带有email域名拼写错误校验功能的超酷动态留言版系统...
查看>>
Reading papers_2(与GMM相关,ing...)
查看>>
JAVA类集
查看>>
黑书上的DP 30题
查看>>
[hadoop源码阅读][4]-org.apache.hadoop.io.compress系列2-选择编解码器
查看>>
Android之传感器(二)之电子罗盘
查看>>
开发人员需要熟知的常用Linux命令之六:rpm
查看>>
spring(7)
查看>>