![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Joil |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: 1 Всего: 8 |
Привет всем. Короче такая ситуация. С прогресс баром не приходилось работать раньше (но вроде ни чего сложно го там нет). Почему не получается я просто недоумеваю.
Так вот, есть класс MainFrame (ну понятно что там интерфейс (на основе свинга)), в нем есть статическое паблик поле jProgressBar progressBar (все инициализированно, все правильно, установлены min, msx и т. д.). Есть класс Core в нем метод который качает файл и в зависимости от этого меняет value у прогрессБара. Вот его код:
Вот в общем прогресс бар не обновляется при скачивании (только в конце, когда поподает в else и устанавливается в 100). До этого все было не так паршиво написано: прогресс бар был privete и не статик. И в интерфейсе создавался отдельный поток в котором обнавлялся прогресБар, беря значение quantity через метод get из Core ( ну по крайней мере я думаю что это более правильно чем сейчас). В общем так тоже ничего не работало (только из нуля сразу в сто в конце скачивания файла). Я не понимаю почему так. Может кто подскажет в чес дело и за одно какие есть стандартные решения работы с прогрессБаром что бы не выпендриватся с отдельными потоками и паблик статик полями, если значение по которому должен менятся прогресс бар находится в другом классе. --------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 21 Всего: 75 |
Идея про отдельный поток изначально была верной, только обновление progress bar слеlовало принудительно выполнять на edt. Руками это делать надоедает, поэтому был придуман класс Swingworker он эффективно отделяет длительные операции от отрисовки и обработки событий. Вот пример использования:
Есть еще хорошая статья, там как раз примеры с progress bar Это сообщение отредактировал(а) jk1 - 27.4.2010, 22:13 -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Joil |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 24.1.2008 Репутация: 1 Всего: 8 |
jk1, спасибо за пример, ссылку и информацию. Понял в чем ошибался, пока ждал ответа. Сделал отдельный поток временно, сейчас разбираюсь со Swingworker. Очень полезная вещь.
--------------------
Who had deceived thee so often as thyself? © Benjamin Franklin--------------------Always bear in mind that your own resolution to succeed is more important than any other. © Abraham Lincoln--------------------If you need it - do it, if you want it - take it! © ... |
|||
|
||||
![]()
|
| Правила форума "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. |