Java org.eclipse.swt.widgets.Ввод текста имеет большую задержку - PullRequest
2 голосов
/ 23 марта 2012

Код:

        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 Ответ

2 голосов
/ 24 марта 2012

Ваша readAndDispatch петля обратная.Документация для Display#readAndDispatch() гласит, что:

возвращает true, если есть потенциально дополнительная работа, или false, если вызывающая сторона может спать до другого событияпомещается в очередь событий.

Таким образом, ваш цикл на самом деле должен быть:

while(! shell.isDisposed())
{
    if(! display.readAndDispatch())
    {
        display.sleep();
    }
}

Мое понимание sleep() заключалось в том, что должно бытьдовольно эффективно просыпаться, когда появляется новое событие для обслуживания, но это, конечно, не гарантия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...