Почему JFrame создается в другой теме - PullRequest
1 голос
/ 28 апреля 2019

Я не могу понять, что именно происходит за сценой.

Если у меня есть основной метод, как показано ниже, значит ли это, что у меня есть 2 потока? Один основной поток и один поток для событий, таких как paintComponent или слушателей и т. Д.? Если так, что именно происходит в главном потоке?

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
        try {
            Ampelsteuerung frame = new Ampelsteuerung();
            frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        }
    });
    }`

Я удалил EventQueue и проверил его без, никакой разницы не увидел.

1 Ответ

0 голосов
/ 28 апреля 2019

Если вы прочитаете описание SwingUtilities.invokeLater (), вы поймете причины. Это все о синхронизации между событиями AWT и потоками GUI

Это произойдет после обработки всех ожидающих событий AWT. Этот метод следует использовать, когда поток приложения необходимо обновить GUI .... Если invokeLater вызывается из потока диспетчеризации событий - например, из ActionListener JButton - doRun.run () будет по-прежнему откладываться до тех пор, пока все ожидающие события не будут обработаны

Следовательно, «ничего» не происходит, если не существует ожидающего события, как в вашем случае.

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