Не могу установить текст в обработчике событий - PullRequest
1 голос
/ 27 января 2012

Я довольно новичок в Java, поэтому я, вероятно, здесь упускаю что-то фундаментальное, но здесь идет речь.

У меня есть графический интерфейс с кнопкой, и я хочу нажать на нее, изменить текст в окне на что-тозатем выполните задачу

        connectButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    databaseConnectWindow.setText("Connecting...");
                    connectToDatabase();
                 }
        });

Но с кодом выше текст в databaseConnectWindow не изменяется до тех пор, пока не завершится conectToDatabse.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Используйте SwingWorker для фонового потока, чтобы не блокировать поток графического интерфейса, иначе известный как поток диспетчеризации событий или EDT. Подробнее об этом см. Урок: параллелизм в Swing

1 голос
/ 27 января 2012

Вы вызываете connectToDatabase() в потоке пользовательского интерфейса.
Пользовательский интерфейс не может обновиться, пока поток пользовательского интерфейса не освободится.

Вы должны подключиться к базе данных в фоновом потоке.

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