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() возвращается. Этот метод следует использовать, когда поток приложения должен обновить графический интерфейс.

Другие вопросы по тегам