Доступ к GUI из другого потока
Доступ к GUI из другого потока
Есть программа на Java под Windows - нужно раз в минуту читать буфер обмена и выводить данные в текстовое поле. Отсюда вопрос - есть ли в Java такие механизмы вроде AsyncTask, которые выполняют код в отдельном потоке и по его окончании вызывают метод в главном потоке. Или может что то наподобие BroadcastReceiver..
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Доступ к GUI из другого потока
Создаете Handler в UI потоке и все сообщения отправленные в него будут выполнены в UI потоке. По такому же принципу работает AsyncTask.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Доступ к GUI из другого потока
Денис, написано же, в Java, т.е. в чистой Java.
Есть такое, но с ходу не вспомню что именно.
Есть такое, но с ходу не вспомню что именно.
Re: Доступ к GUI из другого потока
Разве что запустить Callable через ExecutorService..Но метод get судя по всему заблокирует главный поток. Вечером попробую.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Доступ к GUI из другого потока
Действительно, почему-то мне казалось, что это к Java относится.Mikhail_dev писал(а):Денис, написано же, в Java, т.е. в чистой Java.
Есть такое, но с ходу не вспомню что именно.
Тогда нужно разбираться в работе самого GUI. В нем обязательно должны быть методы по выполнению кода в UI потоке.
Если используете Swing то вот этот, вроде, должен подойти: http://docs.oracle.com/javase/7/docs/ap ... .Runnable)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Доступ к GUI из другого потока
Ну и совсем нубский вопрос - как эти данные вывести хотя бы в консоль? System.out.println() консоль почему то не открывает..
Update: Понял=) Jar был ассоциирован с javaw.exe=)
Update: Понял=) Jar был ассоциирован с javaw.exe=)