首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SWT札记2——测试UI线程的事件处理

2012-12-18 
SWT笔记2——测试UI线程的事件处理import org.eclipse.swt.widgets.Displaypublic class TestEventQueue {p

SWT笔记2——测试UI线程的事件处理



import org.eclipse.swt.widgets.Display;public class TestEventQueue {public static void main(String[] args) {final Display display = Display.getDefault();Shell shell = new Shell();shell.setSize(450, 300);shell.setText("测试事件循环");//直接处理,阻塞UI线程final Button btnBlock = new Button(shell, SWT.NONE);btnBlock.setToolTipText("直接处理事件,费时的操作会阻塞UI线程");btnBlock.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {try {Thread.sleep(5000);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}btnBlock.setText("按下按钮后的文字");}});btnBlock.setBounds(10, 10, 107, 27);btnBlock.setText("\u963B\u585EUI\u7EBF\u7A0B");//新线程中处理费事的操作,再用display.syncExec()函数提交改变UI的操作,该操作会阻塞UI线程,但改变外观时间很短,忽略不计;不阻塞用display.asyncExec().final Button btnUnblock = new Button(shell, SWT.NONE);btnUnblock.setToolTipText("新线程中处理费事的操作,再用display.syncExec()函数提交改变UI的操作,该操作会阻塞UI线程,但改变外观时间很短,忽略不计;不阻塞用display.asyncExec()");btnUnblock.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}display.syncExec(new Runnable() {@Overridepublic void run() {btnUnblock.setText("按下按钮后的文字");}});}}).start();}});btnUnblock.setBounds(192, 10, 118, 27);btnUnblock.setText("\u4E0D\u963B\u585EUI\u7EBF\u7A0B");shell.open();shell.layout();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}}}

热点排行