Вы можете использовать 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...
}
});
}