progressBar 进度条
一个可视化指示器,用于展示正在进行中任务的状态和完成情况,例如文件传输、数据加载、复杂的计算或任何其他耗时的任务。
-
XML 元素:
progressBar
-
Java 类:
ProgressBar
进度更新
进度值通常在正在进行的任务的上下文环境中更新,以便进度条能精确反映任务的当前状态。
下面的示例是一个简单的 后台任务 更新进度条的值:
XML 代码
<progressBar id="progressBar"/>
Java code
@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 | 在控制器中注入进度条。 |
2 | 当视图打开时,初始化一个后台任务。 |
3 | 定义一个方法创建简单的后台任务。 |
4 | 任务执行过程中,更新进度状态。 |
模式
进度条根据任务的不同或进度信息是否能获取可以支持 可确定 和 非确定 两种模式。
可确定
默认情况下,progressBar
以 可确定 的模式展示进度。可以给用户展示任务还需多少时间才能完成。
XML 代码
<progressBar id="determinateMode"/>
当任务完成时间可预计或能跟踪任务进度时,请使用可确定模式。
非确定
设置 indeterminate 属性为 true
可以将进度条改为 非确定 模式。该模式下会展示一个循环播放的进度条,而非一个特定的进度值。
XML 代码
<progressBar id="indeterminateMode" indeterminate="true"/>
当无法获取任务进度或展示一个持续运行的任务时,请使用非确定模式。
XML 属性
事件和处理器
在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 Code → Generate 菜单(Alt+Insert / Cmd+N)生成。 |
本页是否有帮助?
感谢您的反馈