progressBar
Визуальный индикатор для отображения статуса и прогресса выполнения текущей задачи, такой как передача файлов, загрузка данных, сложные вычисления или другие длительные операции. Помогает пользователям оценить оставшееся время выполнения.
-
XML-элемент:
progressBar
-
Java-класс:
ProgressBar
Основы
Стандартный индикатор прогресса принимает значения от 0.0 до 1.0, где 0% соответствует 0.0, а 100% - 1.0.

XML код
<progressBar value="0.5"/>
Обновление прогресса
Значение прогресса обычно обновляется в контексте выполняемой задачи. Это позволяет индикатору прогресса точно отображать текущее состояние операции.
Рассмотрим пример простой фоновой задачи, которая обновляет значение progressBar
:
XML код
<progressBar id="progressBar"/>
Java код
@ViewComponent
protected ProgressBar progressBar; (1)
@Autowired
protected BackgroundWorker backgroundWorker;
protected BackgroundTaskHandler<Void> taskHandler;
private static final int ITERATIONS = 6;
@Subscribe
protected void onInit(InitEvent event) { (2)
taskHandler = backgroundWorker.handle(createBackgroundTask());
taskHandler.execute();
}
protected BackgroundTask<Integer, Void> createBackgroundTask () { (3)
return new BackgroundTask<>(100, TimeUnit.SECONDS) {
@Override
public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception {
for (int i=1; i< ITERATIONS; i++) {
TimeUnit.SECONDS.sleep(1);
taskLifeCycle.publish(i);
}
return null;
}
@Override
public void progress (List<Integer> changes) {
double lastValue = changes.get(changes.size() - 1);
double value = lastValue/ITERATIONS;
progressBar.setValue(value); (4)
}
};
}
1 | Инжектируйте progressBar для доступа к нему в классе контроллера. |
2 | При открытии этого экрана инициируйте задачу для выполнения в фоновом режиме. |
3 | Определите метод для создания простой фоновой задачи. |
4 | По мере выполнения задачи обновляйте значение прогресса, чтобы отражать её текущий статус. |
Режимы работы
Индикатор прогресса может работать в детерминированном или недетерминированном режиме, в зависимости от характера задачи и доступности информации о прогрессе.
Детерминированный режим
По умолчанию progressBar
отображает прогресс в детерминированном режиме. Этот режим предоставляет пользователям визуальное представление оставшегося времени до завершения задачи.

XML код
<progressBar id="determinateMode"/>
Используйте детерминированный индикатор прогресса, когда время выполнения задачи известно заранее или можно отслеживать прогресс.
Недетерминированный режим
Установив атрибут indeterminate в значение true
, вы можете перевести индикатор прогресса в недетерминированный режим. В этом режиме progressBar
циклически анимируется по всей длине полосы, не отображая конкретного значения прогресса.

XML код
<progressBar id="indeterminateMode" indeterminate="true"/>
Используйте этот режим для задач, которые не предоставляют значение прогресса или для обозначения непрерывно выполняющегося процесса.
Диапазон значений
По умолчанию индикатор прогресса принимает значения от 0.0 до 1.0, что соответствует 0% и 100% соответственно. Это стандартное поведение, которое можно изменить с помощью атрибутов min и max.
Например, если ваша задача состоит из 10 шагов, вы можете установить min="1"
и max="10"
, чтобы соответствовать диапазону прогресса задачи. Достижение 5-го шага будет означать, что значение прогресса также достигло 5:

XML код
<progressBar min="0" max="10" value="5"/>
Диалог прогресса
Если требуется, чтобы пользователь дождался завершения задачи, можно использовать диалог фоновой задачи.

Этот диалог блокирует взаимодействие пользователя с остальной частью приложения до тех пор, пока задача не будет завершена или отменена пользователем.
Атрибуты
id - alignSelf - classNames - colspan - css - height - indeterminate - max - maxHeight - maxWidth - min - minHeight - minWidth - themeNames - value - visible - width
themeNames
Устанавливает тему для изменения цветов компонента и привлечения внимания пользователя.

-
contrast
– применяет более контрастную цветовую схему. -
error
– сигнализирует об ошибочном состоянии. -
success
– указывает на успешное выполнение.
Обработчики
Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). |
Смотрите также
Смотрите документацию Vaadin для получения дополнительной информации.