ProgressBar
ProgressBar
демонстрирует статус выполнения процесса. Прогресс может быть определенным или неопределенным. Используйте ProgressBar
, чтобы показать текущий процесс, для завершения которого требуется заметное время.
XML-имя компонента: progressBar
.
Определенный процесс
В приведенном ниже примере будет использоваться механизм фоновых задач.
Смоделируем ситуацию, в которой можно отслеживать текущую стадию процесса:
<progressBar id="progressBar" width="100%" />
@Autowired
protected ProgressBar progressBar;
@Autowired
protected BackgroundWorker backgroundWorker;
private static final int ITERATIONS = 6;
@Subscribe
protected void onInit(InitEvent event) {
BackgroundTask<Integer, Void> task = new BackgroundTask<Integer, Void>(100) {
@Override
public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception {
for (int i = 1; i <= ITERATIONS; i++) {
TimeUnit.SECONDS.sleep(1); (1)
taskLifeCycle.publish(i);
}
return null;
}
@Override
public void progress(List<Integer> changes) {
double lastValue = changes.get(changes.size() - 1);
progressBar.setValue(lastValue / ITERATIONS); (2)
}
};
BackgroundTaskHandler taskHandler = backgroundWorker.handle(task);
taskHandler.execute();
}
1 | Некая задача, требующая времени для выполнения |
2 | Здесь устанавливается значение компонента, которым должно быть число типа double от 0.0 до 1.0 . |
Неопределенный процесс
Если выполняемый процесс не может передавать информацию о прогрессе, то с помощью атрибута indeterminate
можно задать отображение неопределенного состояния индикатора. Если значение атрибута равно true
, то индикатор отображает неопределенное состояние. По умолчанию false
.
Например:
<progressBar indeterminate="true" width="200px"/>
Стили
Чтобы изменить форму индикатора на точку, перемещающуюся по полосе, вместо растущей полосы, используйте атрибут stylename
со значением point
:
По умолчанию неопределенный индикатор представляет собой горизонтальную полосу. Чтобы отобразить ProgressBar
в виде крутящегося колесика, установите для атрибута stylename
значение indeterminate-circle
.
События и слушатели
Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI. В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана. |
ValueChangeEvent
ValueChangeEvent<Double>
отправляется при изменении значений компонента и имеет следующие методы:
-
getValue()
- возвращает число между0.0
и1.0
, соответствующее текущему статусу прогресса, где1.0
означает выполненный процесс, а0.0
– не начатый. -
getPrevValue()
- возвращает такие же значения, но соответствующие статусу процесса на предыдущем этапе.
Для программной регистрации слушателя события используйте метод компонента addValueChangeListener()
.
Все XML-атрибуты
Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio. |
align - box.expandRatio - caption - captionAsHtml - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - description - descriptionAsHtml - enable - height - htmlSanitizerEnabled - icon - id - indeterminate - responsive - rowspan - stylename - visible - width