ProgressIndicator组件显示进程条,ProgressIndicator组件定时向服务器查询其当前值,如果值有变化,则更新进程条进度。Web应用本身无需实现任何查询服务器的操作,查询由ProgressIndicator组件自动完成。
ProgressIndicator组件的值域为0.0到1.0之间。缺省的查询(polling)间隔为1秒,可以使用setPollingInterval 修改。
// Create the indicator final ProgressIndicator indicator = new ProgressIndicator(new Float(0.0)); main.addComponent(indicator); // Set polling frequency to 0.5 seconds. indicator.setPollingInterval(500);
ProgressIndicator组件通常用来显示一些耗时操作(比如下载文件)的进度。 使用setValue 为ProgressIndicator组件设置当前值。
下面代码模拟一个费时操作提供ProgressIndicator组件显示进度。
// Create an indicator that makes you look busy final ProgressIndicator indicator = new ProgressIndicator(new Float(0.0)); main.addComponent(indicator); // Set polling frequency to 0.5 seconds. indicator.setPollingInterval(500); // Add a button to start working final Button button = new Button("Click to start"); main.addComponent(button); // Another thread to do some work class WorkThread extends Thread { public void run () { double current = 0.0; while (true) { // Do some "heavy work" try { sleep(50); // Sleep for 50 milliseconds } catch (InterruptedException e) {} // Show that you have made some progress: // grow the progress value until it reaches 1.0. current += 0.01; if (current>1.0) indicator.setValue(new Float(1.0)); else indicator.setValue(new Float(current)); // After all the "work" has been done for a while, // take a break. if (current > 1.2) { // Restore the state to initial. indicator.setValue(new Float(0.0)); button.setVisible(true); break; } } } } // Clicking the button creates and runs a work thread button.addListener(new Button.ClickListener() { public void buttonClick(ClickEvent event) { final WorkThread thread = new WorkThread(); thread.start(); // The button hides until the work is done. button.setVisible(false); } });