Java GUI и потоки - PullRequest
       1

Java GUI и потоки

1 голос
/ 27 июля 2010

У меня есть графический интерфейс, в котором есть текстовая область, кнопки и т. Д. .........

У меня есть другой класс, который является потоком, который работает постоянно. Я хочу добавить текст к текстовой области, когда в классе потока выполняются определенные условия.

В классе, содержащем текстовую область, у меня есть методы получения для текстовой области. Я также объявил этот класс (содержащий текстовое поле) как переменную в классе потока.

Я пытаюсь вызвать метод get текстовой области для переменной, а затем метод append (), но текстовая область не обновляется сама.

что я делаю не так?

спасибо за вашу помощь.

Ответы [ 2 ]

5 голосов
/ 27 июля 2010

Суть в том, что вы должны заботиться о том, чтобы следовать указаниям, данным Sun в соответствии с управлением потоками с Swing, вы можете посмотреть здесь .

Что вы поймете, так этовы должны отправлять события, связанные с графическим интерфейсом, с SwingUtilities.invokeLater(..) и SwingUtilities.invokeAndWait(..) в соответствии с вашим конкретным случаем.Это связано с тем, что событиями GUI управляет Поток диспетчеризации событий , и вы не должны управлять ими в своих собственных потоках ..

1 голос
/ 27 июля 2010

Вы не должны вызывать методы пользовательского интерфейса из потока, не являющегося пользовательским интерфейсом.Чтобы вызывать методы из потока, не являющегося пользовательским интерфейсом, вы должны использовать метод, специфичный для пользовательского интерфейса, который говорит: «отправить фрагмент кода потоку пользовательского интерфейса для выполнения».В SWT это Display.getDefault().asyncExec(Runnable).Для Swing используйте SwingUtilities.invokeLater().

См. эту статью для получения дополнительной информации.

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