SwingUtilities.invokeLater ... есть invokeNow?
Раньше у меня была проблема, когда я пытался добавить объекты на холст, но SwingUtilities.invokeLater еще не выполнил свою работу. Мне действительно нужно иметь возможность надежно добавлять вещи в эту JPanel, но я продолжаю сталкиваться с этой же ошибкой. Есть ли лучшая альтернатива приведенному ниже коду?
private void startNewGame() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gameFrame = new InvadersGameFrame();
}
});
}
1 ответ
Решение
Увидеть SwingUtilities.invokeAndWait(Runnable)
который:
причины
doRun.run()
выполняется синхронно в потоке диспетчеризации событий AWT. Этот вызов блокируется до тех пор, пока все ожидающие события AWT не будут обработаны и (затем)doRun.run()
возвращается. Этот метод следует использовать, когда поток приложения должен обновить графический интерфейс.