JProgressBar смуга завантаження - показуємо прогрес виконання, Java Swing та інша джава

jprogressbar
Нарешті дістався до прогресбарів. Давним-давно один із відвідувачів, а саме товариш Gorets хотів би почитати про смугу завантаження. Заздалегідь перепрошую, що не виправдав очікувань і написав так пізно, але робота з'їла весь час і висмоктала всю мотивацію з мене. А тепер давайте спробуємо розібратися з компонентом JProgressBar, який необхідно використовувати у своєму додатку, якщо потрібно показати прогрес виконання якогось тривалого завдання. Це завдання запускається в рамках програми і потрібно дати користувачеві зрозуміти, що відбувається. Якщо це можливо, то непогано було б показати, коли закінчиться виконання завдання, який відсоток завдання виконався і так далі. Для таких завдань на індикаторі можна відображати відсоток виконання або десь поруч показати приблизний час, через який завершиться завдання. Однак деякі завдання не дозволяють визначити якісь числові характеристики тривалості, в цьому випадку можна показати лише анімований прогрес. Давайте подивимося на JProgressBar (саме його допомогою малюється компонент прогресу на формі), вивчимо його основні методи і розберемо простий тестовий приклад. Хочеться відзначити, що JProgressBar часто використовується не сам по собі, а в поєднанні з іншими класами, такими як SwingWorker або ProgressMonitor. Але поки що я вирішив подивитися тільки на JProgressBar і "зварганити" дуже простий приклад. Використання JProgressBar разом з іншими службовими класами подивлюся пізніше. Швидше за все доведеться робити багатопотоковий додаток.

Для завдань, час виконання яких невідомо, можна використовувати «нескінченний» JProgressBar. Такий прогрес бар не показуватиме конкретної цифри – відсотка виконаннязавдання та того, скільки ще залишилося. Він лише інформуватиме користувача про те, що щось виконується. Такий JProgressBar дуже схожий на індикатор, який використовується при завантаженні веб-сторінок – він тільки показує завантаження і більше ні про що не говорить.

Щоб отримати «нескінченний» JProgressBar необхідно зробити так:

Потім залишається лише додати отриманий JProgressBar у потрібне місце вікна програми.

Такий прогрес бар, на мій погляд, зручніше використовувати в невеликому розмірі приблизно так, як показано на рисунках нижче.

Другий тип JProgressBar припускає, що в процесі виконання якогось завдання можна будь-якої миті сказати про те, який відсоток завдання виконано і скільки ще залишилося. Для таких прогрес барів має місце використання таких методів. Метод setMinimum та setMaximum встановлюють відповідно мінімальне та максимальне значення для прогресу бару. Метод setValue встановлює значення, яке відображатиме JProgressBar.

Наприклад, якщо зробити так:

то отримаємо наступний результат

Метод setStringPainted говорить компоненту, чи відображати текстовий напис чи ні.