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
值。
默认情况下,不定进度条显示为水平状态条。要改为显示螺旋状的进度条,请设置 stylename
为 indeterminate-circle
值。
事件和处理器
如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Jmix UI 层级结构面板选中该组件,然后用 Jmix UI 组件面板的 Handlers 标签页生成。 或者可以使用界面控制器顶部面板的 Generate Handler 按钮。 |
ValueChangeEvent
ValueChangeEvent<Double>
当进度值变化时发送,该事件具有下列方法:
-
getValue() - 返回表示当前状态的值,在
0.0
和1.0
之间。1.0
表示已经完成,0.0
表示还未开始。 -
getPrevValue() - 返回同样的值,只不过该值表示的前一个状态。
如需以编程的方式注册事件处理器,使用组件的 addValueChangeListener()
方法。
XML 属性
可以使用 Studio 界面设计器的 Jmix UI 组件面板查看和编辑组件的属性。 |
align - box.expandRatio - caption - captionAsHtml - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - description - descriptionAsHtml - enable - height - htmlSanitizerEnabled - icon - id - indeterminate - responsive - rowspan - stylename - visible - width