Vaadin Web应用开发教程(24):UI组件-ProgressIndicator组件

来源:互联网 发布:艾默生电气集团知乎 编辑:程序博客网 时间:2024/05/04 03:51

ProgressIndicator组件显示进程条,ProgressIndicator组件定时向服务器查询其当前值,如果值有变化,则更新进程条进度。Web应用本身无需实现任何查询服务器的操作,查询由ProgressIndicator组件自动完成。
ProgressIndicator组件的值域为0.0到1.0之间。缺省的查询(polling)间隔为1秒,可以使用setPollingInterval 修改。

// Create the indicatorfinal 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 busyfinal 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 workingfinal Button button = new Button("Click to start");main.addComponent(button);// Another thread to do some workclass 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 threadbutton.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);    }});