progressBar

Визуальный индикатор для отображения статуса и прогресса выполнения текущей задачи, такой как передача файлов, загрузка данных, сложные вычисления или другие длительные операции. Помогает пользователям оценить оставшееся время выполнения.

  • XML-элемент: progressBar

  • Java-класс: ProgressBar

Основы

Стандартный индикатор прогресса принимает значения от 0.0 до 1.0, где 0% соответствует 0.0, а 100% - 1.0.

progress bar determinate
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 отображает прогресс в детерминированном режиме. Этот режим предоставляет пользователям визуальное представление оставшегося времени до завершения задачи.

progress bar determinate
XML код
<progressBar id="determinateMode"/>

Используйте детерминированный индикатор прогресса, когда время выполнения задачи известно заранее или можно отслеживать прогресс.

Недетерминированный режим

Установив атрибут indeterminate в значение true, вы можете перевести индикатор прогресса в недетерминированный режим. В этом режиме progressBar циклически анимируется по всей длине полосы, не отображая конкретного значения прогресса.

progress bar indeterminate
XML код
<progressBar id="indeterminateMode" indeterminate="true"/>

Используйте этот режим для задач, которые не предоставляют значение прогресса или для обозначения непрерывно выполняющегося процесса.

Диапазон значений

По умолчанию индикатор прогресса принимает значения от 0.0 до 1.0, что соответствует 0% и 100% соответственно. Это стандартное поведение, которое можно изменить с помощью атрибутов min и max.

Например, если ваша задача состоит из 10 шагов, вы можете установить min="1" и max="10", чтобы соответствовать диапазону прогресса задачи. Достижение 5-го шага будет означать, что значение прогресса также достигло 5:

progress bar determinate
XML код
<progressBar min="0" max="10" value="5"/>

Диалог прогресса

Если требуется, чтобы пользователь дождался завершения задачи, можно использовать диалог фоновой задачи.

backgroundtask dialog

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

Атрибуты

indeterminate

Активирует или деактивирует недетерминированный режим отображения прогресса.

max

Задает максимальное значение прогресса. По умолчанию: 1.0.

min

Задает минимальное значение прогресса. По умолчанию: 0.0.

themeNames

Устанавливает тему для изменения цветов компонента и привлечения внимания пользователя.

progress bar themenames
  • contrast – применяет более контрастную цветовую схему.

  • error – сигнализирует об ошибочном состоянии.

  • success – указывает на успешное выполнение.

value

Определяет значение progressBar. Значение должно находиться в стандартном диапазоне от 0.0 до 1.0 либо в пользовательском диапазоне min и max, если он задан.

Обработчики

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).

Смотрите также

Смотрите документацию Vaadin для получения дополнительной информации.