progressBar 进度条
progressBar 展示耗时任务的状态和完成情况。
XML Element |
|
|---|---|
Java Class |
|
进度更新
进度值通常在正在进行的任务的上下文环境中更新,以便进度条能精确反映任务的当前状态。
下面的示例是一个简单的 后台任务 更新进度条的值:
XML
<progressBar id="progressBar"/>
Java
protected static final int ITERATIONS = 20;
@ViewComponent
protected ProgressBar progressBar;
@ViewComponent
protected Span labelSpan;
@ViewComponent
protected Span percentSpan;
@ViewComponent
protected JmixButton controlButton;
@Autowired
protected BackgroundWorker backgroundWorker;
protected BackgroundTaskHandler<Void> taskHandler;
protected void runNewTask() {
taskHandler = backgroundWorker.handle(createBackgroundTask());
taskHandler.execute();
}
protected BackgroundTask<Integer, Void> createBackgroundTask() {
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;
if (value < 1) {
labelSpan.setText("In progress");
} else {
labelSpan.setText("Done");
controlButton.setIcon(VaadinIcon.REFRESH.create());
}
progressBar.setValue(value);
percentSpan.setText(Double.valueOf(value * 100).intValue() + "%");
}
};
}
@Subscribe("controlButton")
protected void onControlButtonClick(ClickEvent<JmixButton> event) {
if (taskHandler == null || taskHandler.isDone() || taskHandler.isCancelled()) {
runNewTask();
event.getSource().setIcon(VaadinIcon.STOP.create());
} else if (taskHandler != null && taskHandler.isAlive()) {
taskHandler.cancel();
labelSpan.setText("Canceled");
event.getSource().setIcon(VaadinIcon.REFRESH.create());
}
}
进度可确定
默认情况下,progressBar 以 可确定 的模式展示进度。可以给用户展示任务还需多少时间才能完成。
<progressBar id="progressBar" width="100%"/>
当任务完成时间可预计或能跟踪任务进度时,请使用可确定模式。
进度不确定
设置 indeterminate 属性为 true 可以将进度条改为 非确定 模式。该模式下会展示一个循环播放的进度条,而非一个特定的进度值。
<progressBar indeterminate="true" width="100%"/>
当无法获取任务进度或展示一个持续运行的任务时,请使用非确定模式。
进度对话框
如果需要用户等待任务的完成,可以使用 后台任务对话框。
这个对话框可以禁止用户在任务执行期间的任何交互,直到任务结束或用户取消任务。
样式版本
使用 themeNames 属性配置一个或多个样式。
| 样式 | 描述 | 支持的主题 |
|---|---|---|
|
表示进度令人满意或接近完成。 |
Aura, Lumo |
|
表示进度不理想,或需要用户注意停滞或失败。 |
Aura, Lumo |
|
提高可见性 |
Aura, Lumo |
本页是否有帮助?
感谢您的反馈