![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| koreyko |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
Здравствуйте, есть такой код:
Описание привел в комментариях. Т.е. задача - получить доступ к серверу, если доступ есть, то должна выполниться такая последовательность: - создать новое JInternalFrame, туда вставить JSplitPanel, в который в свою очередь вставить JTree с уже созданным рутовым узлом и отобразить все это; - получить данные с сервера, довольно затратная процедура по времени; - на основе полученных данных достроить существующее дерево и отобразить его. Что получается в действительности: - вначале происходит получение данных с сервера, и только после этого отображается вновь созданный JInternalFrame с содержимым. Я так понимаю, здесь возникают проблемы с потоками и очередями событий. К сожалению, я слаб в этом, на практике никогда не пользовался. Читал только, что для действий над swing-объектами необходимо использовать SwingUtilities.invokeLater(), для длительных процессов - класс SwingWorkeк. Возможно еще есть нюансы, связанные с расположением всего этого в лисенере. Подскажите, в каких именно потоках правильно вышеуказанный код. Спасибо. |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Сейчас все выполняется в одном потоке. Лучше перенести "получение данных с сервера" в другой поток.
1. В actionPerformed создаем и показываем JInternalFrame с заглушкой "Загрузка данных..." 2. Запускаем SwingWorker, который загружает данные. Пример использования: http://java.sun.com/developer/technicalArt...se/swingworker/ 3. В методе "done" SwingWorker'a выводим полученные данные на форму. -------------------- Lost.... |
|||
|
||||
| koreyko |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 20.4.2010 Репутация: нет Всего: нет |
Спасибо, получилось. Правда пришлось обернуть создание JInternalFrame в SwingUtilities.invokeLater(), иначе вновь созданный JInternalFrame отображался уже после завершения работы SwingWorker. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |