![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Есть набор данных, в процессе перебора которого хочу отображать прогресс в JProgressBar. Как сиё осуществить?
![]()
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Connie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
Данкинг, проблема, как я понимаю в том, что кол-во отбираемых записей не известно.
Я бы сделал два запроса
В результате бы получил таблицу с одной записью, которая покажет сколько будет отбираться всего записей. Ну а второй уже
|
||||
|
|||||
frodo5 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
тут не все так просто, gauge.setValue(???? непонятно, какое значение задавать); придется делать в отдельном потоке, если хотите чтобы результат отрисовывался в каждом цикле а не после окончания всех циклов прохода результ сэта
|
|||
|
||||
Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
frodo5, ну тогда можно использовать SwingWorker
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Вот я про это же. А пример можно? ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Не работает.
![]()
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
Добавлено через 5 минут и 37 секунд Нужно добавть обработку икслючений и проверку что предыдущий invokeLater() отработал |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Ошибка: Invalid Hanlder
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
В общем, получилось:
![]() И несколько вопросов: 1. Зачем переменные (как в моём примере) объявлять Final, иначе они в потоке не видны? 2. Зачем обновление прогрессбара выносить в отдельный поток? В каких случаях следует делать подобное? ![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
math64 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
1. Зачем переменные (как в моём примере) объявлять Final, иначе они в потоке не видны?
Некоторые final из твоего примера действительно не нужны, но остальные нужны. Если у тебя хорошая IDE, примени рефакторинг Convert Anonimous To Inner - нужные final-переменные станут полями вложенного класса, инициализированными в конструкторе. Рефакторинг можешь отменить. 2. Зачем обновление прогрессбара выносить в отдельный поток? В каких случаях следует делать подобное? Оно не выносится в отдельный поток, с ставятся в очередь в специальный поток Swing, занимающийся перерисовкой. Если в ResultSet будет много записей, а обрабатывать ты их будешь быстрее, чем Swing будет прорисовывать JProgressBar, ... Строго говоря,
и
нужно тоже вызывать через invokeLater() |
||||
|
|||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Т.е. так же писать для них свои функции с invokeLater() ? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
Да, по идее для них то же нужно писать функции с invokeLater, можно использовать один вложенный класс вместо аномимного:
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
math64, спасибо, обещаю разобраться.
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 5 Всего: 72 |
Тут немножко неправльно - showMessageDialog() может быть вызвано несколько раз
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |