3.5.2.1.34. 进度条
ProgressBar
组件用于显示需要长时间处理的任务的进度。
该组件的 XML 名称: progressBar
下面是该组件与后台任务机制一起使用的示例:
<progressBar id="progressBar" width="100%"/>
@Inject
private ProgressBar progressBar;
@Inject
private BackgroundWorker backgroundWorker;
private static final int ITERATIONS = 5;
@Subscribe
protected void onInit(InitEvent event){
BackgroundTask<Integer, Void> task = new BackgroundTask<Integer, Void>(300, getWindow()) {
@Override
public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception{
for(int i = 1; i <= ITERATIONS; i++) {
TimeUnit.SECONDS.sleep(2); (1)
taskLifeCycle.publish(i);
}
return null;
}
@Override
public void progress(List<Integer> changes){
double lastValue = changes.get(changes.size() - 1);
progressBar.setValue((lastValue / ITERATIONS));
}
};
BackgroundTaskHandler taskHandler = backgroundWorker.handle(task);
taskHandler.execute();
}
1 | 一些比较耗时的任务 |
BackgroundTask.progress()
方法在 UI 线程中被执行,在这个方法里给 ProgressBar
组件设置当前的进度值。组件值应该是从 0.0
到 1.0
的 double
类型的数值。
可以使用 ValueChangeListener
跟踪 ProgressBar
值的变化。可以使用 isUserOriginated() 方法跟踪 ValueChangeEvent
的来源。
如果正在运行的处理无法发送有关进度的信息,则可以显示表示不确定状态的指示符。将 indeterminate
设置为 true
以显示不确定状态。默认为 false
。例如:
<progressBar id="progressBar" width="100%" indeterminate="true"/>
默认情况下,不定进度条显示为水平状态条。要改为显示螺旋状的进度条,可以设置属性 stylename="indeterminate-circle"
。
要使进度条指示器显示为在进度条上移动的点(而不是增长条),请使用 point
预定义样式:
progressBar.setStyleName(HaloTheme.PROGRESSBAR_POINT);
- progressBar 的属性
-
align - caption - captionAsHtml - contextHelpText - contextHelpTextHtmlEnabled - css - description - descriptionAsHtml - enable - box.expandRatio - height - htmlSanitizerEnabled - id - indeterminate - stylename - visible - width
- progressBar 的预定义样式
- API