线程调用ui控件的措施

Atitit.swt 线程调用ui控件的不二诀窍

 

 

1 SwingUtilities.invokeLater1

2 display.asyncExec方法1

3  display.timerExec(500,timer);2

4 、但有的时候并不应当要程序试行时将要按期检查评定,有的时候须要外表事情激发这就涌出了第2种缓慢解决方案,写八个内置类,能够投身事件监听的秘籍中,然后激发:2

5 参考3

 

1   SwingUtilities.invokeLater

 

  SwingUtilities.invokeLater(new Runnable(){                        @Override                        public void run() {                            label2.setText(x + “”);                        }                    });

那个主题素材自身也碰着过,有个updateUI()方法,能够化解。

 

2 display.asyncExec方法

用SWT提供的display.asyncExec方法,开掘其实质根本不是另开三个线程,只是把run方法调用了贰次,所以形成调用Thread.sleep时前后相继就能死掉。

不时候是此外二个线程

 

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:14665一九八二9@qq.com

转发请注脚来源: http://www.cnblogs.com/attilax/

 

3  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);  

 

 

4 、但偶然并不一定要程序实施时就要定期检查评定,有时须求外界事情激发那就出现了第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();  

 

 

5 参考

SWT中放大计时器的少年老成种特有完毕方式_SWT中线程互访时display.asyncExec_display.syncExec…程序死掉无响应的消除办法 – fm二〇〇七的专栏 – 博客频道 – CSDN.NET.html