ZK 长时操作带进度条
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 长时操作带进度条的更多相关文章
- struts2:上传多个文件时实现带进度条、进度详细信息的示范
上一篇文章讲了上传单个文件与上传多个文件(属性驱动)的例子.本例是上传多个文件(属性驱动),并且显示进度条.进度详细信息的示范. 在文件上传选择界面,允许用户增加.删除选择的文件,且只能上传指定类型的 ...
- HTML5多图片拖拽上传带进度条
前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...
- Android带进度条的文件上传,使用AsyncTask异步任务
最近项目中要做一个带进度条的上传文件的功能,学习了AsyncTask,使用起来比较方便,将几个方法实现就行,另外做了一个很简单的demo,希望能对大家有帮助,在程序中设好文件路径和服务器IP即可. A ...
- Struts2文件上传带进度条,虽然不是很完美
好久没有写东西,最近在做个项目,要用到文件h 传的,以前虽然也做上传,但是总觉得不好用 ,现在和队友合作做了一个带进度条的上传,觉得还行~~和大家分享一下. 首先说一下大概是这样实现的,在我们平时的上 ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- Android -- 自定义带进度条的按钮
1. 实现了一个带进度条的按钮,完成后显示提示信息,并设置按钮为不可再次被点击
- atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...
- PHP+ajaxForm异步带进度条上传文件实例
在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有: 一.首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量.一个对象或回调函数,这个对象主要有以下参数: v ...
- [Delphi]带进度条的ListView
带进度条的ListView unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, C ...
随机推荐
- java运行jar命令提示没有主清单属性
转自:http://jingyan.baidu.com/article/db55b60990f6084ba30a2fb8.html 可运行的jar:http://mushiqianmeng.blog. ...
- Sublime text追踪函数插件:ctags 和php代码格式化
转自:http://blog.csdn.net/zm2714/article/details/8076077 这两天一直纠结两款编辑器——eclipse和sublime Text. eclipse的p ...
- java&Protocol Buffers
ps: Protocol Buffers简称PB PB 安装配置 下载 PB: 在 PB 官网,下载最新版(或者其他版本)PB,这里为了与 Java 项目中的 PB Maven 依赖版本一致,使用 P ...
- 20145223《Java程序程序设计》第3周学习总结
20145223 <Java程序设计>第3周学习总结 教材学习内容总结 第四章内容 1.类与对象 如何定义一个包含有几个值域(Field成员)就是需要我们定义一个类(Class),书上给的 ...
- The Unique MST(次小生成树)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22335 Accepted: 7922 Description Give ...
- iOS KVC valueForKeyPath学习心得
#import <Foundation/Foundation.h> @interface myClass1 : NSObject @property (nonatomic, copy) N ...
- web api :Routing in ASP.NET Web API
引 Web API 和SignalR都是在服务层. If you are familiar with ASP.NET MVC, Web API routing is very similar to M ...
- block和split的理解
两者是从不同的角度来定义的:HDFS以固定大小的block为基本单位存储数据(分布式文件系统,实际存储角度,物理存储单位),而MapReduce以split作为处理单位(编程模型角度,逻辑单位). 对 ...
- sqlmap使用手册
转自:http://hi.baidu.com/xkill001/item/e6c8cd2f6e5b0a91b7326386 SQLMAP 注射工具用法 1 . 介绍1.1 要求 1.2 网应用情节 1 ...
- 【Oracle】Oracle时间日期格式
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...