Application.DoEvents () -> Эквивалентная функция в Java? - PullRequest
5 голосов
/ 22 июля 2010

Я знаю, что использование потоков более эффективно, чем использование c # DoEvents (), но мне все еще было интересно, есть ли в Java эквивалентная функция.Я погуглил, но ничего не смог найти.

Ответы [ 3 ]

2 голосов
/ 27 сентября 2012

Вы можете использовать Thread.yield(), который является Java-аналогом, чтобы добровольно отказаться от управления процессорами.

1 голос
/ 02 октября 2012

Вы можете использовать EventQueue.invokeLater() для добавления Runnable после всех ожидающих событий.Это имеет результат, аналогичный C # DoEvents(), который предшествует коду, который вы поместили в метод Runnable.run().

См. Документацию Java для EventQueue .

Например, если вы хотите, чтобы все элементы управления GUI потеряли фокус и события потерянного фокуса для выполнения, вы можете использовать следующий код:

@Override 
public void windowClosing(WindowEvent e){
    // Clear the focus to allow last changes to be noted. 
    KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
    // We want to let other events (e.g. lost focus) run before we start closing.
    EventQueue.invokeLater( new Runnable() {
        @Override public void run() {
            // Do actual closing...
        }
    });
}
0 голосов
/ 22 июля 2010

Это называется цикл обработки событий. В этой статье показано, как обрабатываются события в компонентах пользовательского интерфейса в Java.

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