代码:
Display display = new Display();
RowLayout rowLayout = new RowLayout();
Shell shell = new Shell(display);
shell.setLayout(rowLayout);
Text textArea = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
textArea.setLayoutData(new RowData(200, 200));
shell.open();
while(!shell.isDisposed()) {
if(display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
问题:输入文字是狗慢。我实际上必须等待1到3秒才能让文本小部件落后于在蜗牛步骤中显示我的文本。我做错了吗?
答案 0 :(得分:2)
您的readAndDispatch
循环是向后的。 Display#readAndDispatch()
true
表示它:
如果可能有更多工作要做,返回
false
;如果调用者可以睡眠直到另一个事件放在事件队列上,则返回while(! shell.isDisposed()) { if(! display.readAndDispatch()) { display.sleep(); } }
。
因此,你的循环应该是:
sleep()
我对{{1}}的理解是,应该在有新服务事件时醒来时效率相当高,但这肯定不是保证。