LongProcess.zul:

<?xml version="1.0" encoding="UTF-8"?>
<window id="" border="normal">
<button label="从1数到10000">
<attribute name="onClick">
String url = "/Progressmeter.zul";
Window window = (Window)Executions.createComponents(url, null, null);
window.doModal();
</attribute>
</button>
</window>

Progressmeter.zul:

<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<window id="progresswindow" title="进度条显示" border="normal" width="500px"
apply="test.ImportUserProgressViewCtrl">
<vbox>
<label id="progresslabel" value="正在处理中,请耐心等待……"/>
<separator spacing="5px" />
<progressmeter id="userprogress" width="400px" value="0"/>
</vbox>
</window>
</zk>

ImportUserProgressViewCtrl.java:

package test;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Desktop;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.util.GenericAutowireComposer;
import org.zkoss.zul.Label;
import org.zkoss.zul.Progressmeter;
import org.zkoss.zul.Window; public class ImportUserProgressViewCtrl extends GenericAutowireComposer<Component>{ private static final long serialVersionUID = 1L; private Window progresswindow;
private Progressmeter userprogress;
private Label progresslabel; @Override
public void doAfterCompose(Component comp) throws Exception {
// TODO Auto-generated method stub
super.doAfterCompose(comp); // 启动进度条
desktop.enableServerPush(true);
Thread t1 = new Thread(new UserHandleThread(userprogress, progresswindow, progresslabel));
t1.start();
} class UserHandleThread implements Runnable { private Desktop dt;
private Progressmeter pg;
private Window win;
private Label prglb; public UserHandleThread(Progressmeter watchpg, Window window, Label lb) {
pg = watchpg;
dt = watchpg.getDesktop();
win = window;
prglb = lb;
} @Override
public void run() { int rows = 10000;
//作为进度条区域值标准
int[] rowslarge = new int[10];
rowslarge[0] = (int) (rows * 0.1) >= 0 ? (int) (rows * 0.1) : 0;
rowslarge[1] = (int) (rows * 0.2) >= 0 ? (int) (rows * 0.2) : 0;
rowslarge[2] = (int) (rows * 0.3) >= 0 ? (int) (rows * 0.3) : 0;
rowslarge[3] = (int) (rows * 0.4) >= 0 ? (int) (rows * 0.4) : 0;
rowslarge[4] = (int) (rows * 0.5) >= 0 ? (int) (rows * 0.5) : 0;
rowslarge[5] = (int) (rows * 0.6) >= 0 ? (int) (rows * 0.6) : 0;
rowslarge[6] = (int) (rows * 0.7) >= 0 ? (int) (rows * 0.7) : 0;
rowslarge[7] = (int) (rows * 0.8) >= 0 ? (int) (rows * 0.8) : 0;
rowslarge[8] = (int) (rows * 0.9) >= 0 ? (int) (rows * 0.9) : 0;
rowslarge[9] = (int) (rows * 1) >= 0 ? (int) (rows * 1) : 0; try {
//从1数到10000
for (int i = 0; i <= rows; i++) { if (i == rowslarge[0]) {
Executions.activate(dt);
pg.setValue(10);
prglb.setValue("已完成10%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[1]) {
Executions.activate(dt);
pg.setValue(20);
prglb.setValue("已完成20%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[2]) {
Executions.activate(dt);
pg.setValue(30);
prglb.setValue("已完成30%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[3]) {
Executions.activate(dt);
pg.setValue(40);
prglb.setValue("已完成40%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[4]) {
Executions.activate(dt);
pg.setValue(50);
prglb.setValue("已完成50%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[5]) {
Executions.activate(dt);
pg.setValue(60);
prglb.setValue("已完成60%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[6]) {
Executions.activate(dt);
pg.setValue(70);
prglb.setValue("已完成70%……");
Executions.deactivate(dt);
Thread.sleep(2000);
} else if (i == rowslarge[7]) {
Executions.activate(dt);
pg.setValue(80);
prglb.setValue("已完成80%……");
Executions.deactivate(dt);
Thread.sleep(2000);
}else if (i == rowslarge[8]) {
Executions.activate(dt);
pg.setValue(90);
prglb.setValue("已完成90%……");
Executions.deactivate(dt);
Thread.sleep(2000);
}else if (i == rowslarge[9]) {
Executions.activate(dt);
pg.setValue(100);
prglb.setValue("100%,导入成功,正自动关闭窗口,请稍等..");
Executions.deactivate(dt);
Thread.sleep(2000);
}
}
Executions.activate(dt);
win.detach();
Executions.deactivate(dt);
} catch (Exception e) {
// TODO: handle exception
}
}
} }

最终效果如下:

ZK 长时操作带进度条的更多相关文章

  1. struts2:上传多个文件时实现带进度条、进度详细信息的示范

    上一篇文章讲了上传单个文件与上传多个文件(属性驱动)的例子.本例是上传多个文件(属性驱动),并且显示进度条.进度详细信息的示范. 在文件上传选择界面,允许用户增加.删除选择的文件,且只能上传指定类型的 ...

  2. HTML5多图片拖拽上传带进度条

    前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...

  3. Android带进度条的文件上传,使用AsyncTask异步任务

    最近项目中要做一个带进度条的上传文件的功能,学习了AsyncTask,使用起来比较方便,将几个方法实现就行,另外做了一个很简单的demo,希望能对大家有帮助,在程序中设好文件路径和服务器IP即可. A ...

  4. Struts2文件上传带进度条,虽然不是很完美

    好久没有写东西,最近在做个项目,要用到文件h 传的,以前虽然也做上传,但是总觉得不好用 ,现在和队友合作做了一个带进度条的上传,觉得还行~~和大家分享一下. 首先说一下大概是这样实现的,在我们平时的上 ...

  5. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  6. Android -- 自定义带进度条的按钮

    1. 实现了一个带进度条的按钮,完成后显示提示信息,并设置按钮为不可再次被点击

  7. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

  8. PHP+ajaxForm异步带进度条上传文件实例

    在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有: 一.首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量.一个对象或回调函数,这个对象主要有以下参数: v ...

  9. [Delphi]带进度条的ListView

    带进度条的ListView unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, C ...

随机推荐

  1. NSFileManager 的基本使用方法

    本方法已有个人总结, int main(int argc, const char * argv[]) { @autoreleasepool { NSString *path=@"/Users ...

  2. 如何把Eclipse工程导入到Android Studio

      1 在Eclipse中新建android项目androiddemo.里面只有一个MainActivity,主要是使用fastjson将一个Person对象转化成字符串. 2 在项目上点击右键-&g ...

  3. 在Activity中响应ListView内部按钮的点击事件

    最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...

  4. lr中switch的应用

    Action() { char *time; int i,j,length; time=lr_eval_string("{testtime}"); lr_error_message ...

  5. HTML5 重要标签以及属性学习

    1.一个标签可以有多个,class=“A B C ” 效果: 2.padding的扩展:当padding的值是正的时候,元素显示的大小会变大:当padding的值是负的时候,元素显示的大小会变小 pa ...

  6. DSP using MATLAB 示例Example3.23

    代码: % Discrete-time Signal x1(n) : Ts = 0.0002 Ts = 0.0002; n = -25:1:25; nTs = n*Ts; x1 = exp(-1000 ...

  7. DSP using MATLAB 示例Example2.12

    代码: b = [1]; a = [1, -0.9]; n = [-5:50]; h = impz(b,a,n); set(gcf,'Color','white'); %subplot(2,1,1); ...

  8. 手持终端打印POS机(安装移动销售开单订货会软件)无线传输到订货会后台销售管理系统

    当今的服装市场是品牌竞争时代,产品能否紧随潮流前线并迅速推出市场抢得先机,是品牌成功与否的关键.而订货会是每个鞋服企业新产品走向市场至关重要的开端,订货会如何演绎.成功与否,与品牌在竞争洪流中的命运息 ...

  9. Sharepoint更新字段触发工作流(无代码)

    项目背景 Sharepoint 2010 ,Infopath 2010环境,用Infopath设置好表单把数据提交到Sharepoint的Library库.很常见的需求,其中有一个[状态]字段,和[申 ...

  10. jQuery入门第三天

    每个HTML元素根据继承属性都有父parent元素. 举个例子,h3 元素的父元素是 <div class="container-fluid">,<div cla ...