Java org.eclipse.swt.widgets.Text输入有一个-huge-延迟

时间:2012-03-23 19:59:01

标签: java eclipse swt

代码:

        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秒才能让文本小部件落后于在蜗牛步骤中显示我的文本。我做错了吗?

1 个答案:

答案 0 :(得分:2)

您的readAndDispatch循环是向后的。 Display#readAndDispatch() true表示它:

  如果可能有更多工作要做,

返回false;如果调用者可以睡眠直到另一个事件放在事件队列上,则返回while(! shell.isDisposed()) { if(! display.readAndDispatch()) { display.sleep(); } }

因此,你的循环应该是:

sleep()

我对{{1}}的理解是,应该在有新服务事件时醒来时效率相当高,但这肯定不是保证。