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. HDU 4812 D Tree 树分治+逆元处理

    D Tree Problem Description   There is a skyscraping tree standing on the playground of Nanjing Unive ...

  2. 【转】【异常处理】Incorrect string value: '\xF0\x90\x8D\x83...' for column... Emoji表情字符过滤的Java实现

    http://blog.csdn.net/shootyou/article/details/44852639 Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符 ...

  3. FileSeek文件内容搜索工具下载

    Windows 内建的搜索功能十分简单,往往不能满足用户的需要.很多的第三方搜索工具因此诞生,比如 Everything,Locate32等. 而FileSeek也是一款不错的搜索工具,其不同于其他搜 ...

  4. RDLC的部署(无法找到Microsoft.ReportViewer.ProcessingObjectModel.dll文件)

    CMD命令:C:\Windows\assembly\GAC_MSIL\ rdlc 相比微软的其他产品来说,做得还真是够烂的了,比水晶报表也烂得多. 但不知为何我还是宁可先择 rdlc.并且渐渐上手了. ...

  5. Android 插件化 动态升级

    最新内容请见原文:Android 插件化 动态升级 不少朋友私信以及 Android开源交流几个 QQ 群 中都问到这个问题,这里简单介绍下 1.作用 大多数朋友开始接触这个问题是因为 App 爆棚了 ...

  6. Python与Hack之Unix口令

    1.在实验时候,先导入crypt库:必须在Unix环境下才能实现这个模块 2.代码贴一下,以后有了Unix环境试试吧: import cryptimport syssys.modules['Crypt ...

  7. Matlab 查看变量信息who whos命令

  8. 利用K-means聚类分类,进行特征学习

    这只是老师安排的一个实验,准备过程中遇到各种问题,现在贴出来供大家参考,是Andrew Ng参与的研究, 论文依据如下,第二篇是一篇相关的论文, Learning Feature Representa ...

  9. 【面试题】HWL

    1.编程题 设计数据结构,模拟浏览器功能: BACK FORWARD VISIT QUIT Visit 未指定具体网址时,返回主页 http://www.xueersi.com 2.指出下列程序的错误 ...

  10. Python学习笔记10

      1.函数式编程   理论就来自lambda演算,虽然没有学过lisp,一直被其大名震撼. 特性: 函数是以一等公民 可以作为参数 可以作为返回值 具有闭包特性   1.1参数传递方式 一般参数传递 ...