progressBar 进度条

progressBar 用于展示一个进程的完成情况。进度可以是确定的(即,能确定进度的百分比)或不定的。用 progressBar 显示需要长时间处理的任务的进度。

  • XML 元素:progressBar

  • Java 类:ProgressBar

可确定的进度

默认情况下,progressBar可确定 的模式展示进度。这种模式下可以给用户实际完成的进度情况,并能推断还需多少时间才能完成,也就是说,此时的进度指示器会根据从进程中获取的数值变化。

下面是展示 后台任务 进度的示例:

<progressBar id="progressBar"/>
@ViewComponent
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.01.0 之间
progress bar determinate

非确定进度

progressBar 的非确定进度模式会展示一个循环播放的进度条,而非一个特定的进度值。这种模式可以用来展示无法确定进度的任务。

如需使用该模式,设置 indeterminate 属性为 true

<progressBar id="indeterminateProgressBar" indeterminate="true"/>
progress bar indeterminate

XML 属性

indeterminate

启用或禁用 非确定进度 模式。

max

设置进度的最大值。达到该值时,表示进程已经完成。默认值为 1.0

min

设置进度的最小值,表示进程还未开始。默认值为 0.0

themeNames

设置不同的主题,这样可以改变组件的颜色,更加醒目。

progress bar themenames
  • contrast - 使用对比度更高的颜色。

  • error - 错误状态。

  • success - 成功状态。

value

定义 progressBar 的值。值必须在默认的 0.01.0 或自定义的 minmax 之间。

如果值无法解析成 double,会显示错误消息。

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

参考