ProgressBar

ProgressBar - 进度条 展示一个进程的完成情况。进度可以是确定的或不定的。用 ProgressBar 显示需要长时间处理的任务的进度。

progress bar background task

组件的 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.01.0 之间

不确定进度

如果正在运行的进程无法发送有关进度的信息,则可以显示表示不确定状态的指示符。将 indeterminate 设置为 true 以显示不确定状态。默认为 false

示例:

<progressBar indeterminate="true" width="200px"/>
progress bar indeterminate

样式

要使进度条指示器显示为在进度条上移动的点(而不是增长条),请设置 stylenamepoint 值。

progress bar point

默认情况下,不定进度条显示为水平状态条。要改为显示螺旋状的进度条,请设置 stylenameindeterminate-circle 值。

progress bar circle

事件和处理器

如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Component Hierarchy 面板选中该组件,然后用 Component Inspector 面板的 Handlers 标签页生成。

或者可以使用界面控制器顶部面板的 Generate Handler 按钮。

ValueChangeEvent

ValueChangeEvent<Double> 当进度值变化时发送,该事件具有下列方法:

  • getValue() - 返回表示当前状态的值,在 0.01.0 之间。1.0 表示已经完成,0.0 表示还未开始。

  • getPrevValue() - 返回同样的值,只不过该值表示的前一个状态。

如需以编程的方式注册事件处理器,使用组件的 addValueChangeListener() 方法。

ContextHelpIconClickEvent

编程式使用:调用 setContextHelpIconClickHandler() 组件方法。

XML 属性

可以使用 Studio 界面设计器的 Component Inspector 面板查看和编辑组件的属性。