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 ...
随机推荐
- 获取APK签名
获取apk签名工具类 import android.content.Context; import android.content.pm.PackageInfo; import android.con ...
- js String对象
字符串(String) 字符串(String)使用长度属性length来计算字符串的长度: 在字符串中查找字符串 字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置: 实例 ...
- 20145223《Java程序程序设计》第9周学习总结
20145223<Java程序设计>第9周学习总结 教材学习内容总结 第十六章:整合数据库 JDBC入门 1.JDBC简介: 2.JDBC主要分成两个部分,JDBC应用程序开发者接口和JD ...
- ReportNg 测试报告的定制修改【转】
前言 前段时间在Testerhome上面看到了测试报告生成系列之-------如何用 testNG 生成测试报告 简单的描述了一些测试报告的生成,接着有人在评论中回复说可以针对reportNg的测试报 ...
- windows 安装oracle 后,所有服务都是什么意思,需要开户吗?
中的方法成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为: 1. Oracle ORCL VSS Writer Service: Oracle卷映射拷贝写入服务,VSS(Volum ...
- MFC 重载退出(窗口顶上最右边的x按钮)
其实可以在*Dlg.cpp中的BEGIN_MESSAGE_MAP中对IDCANCEL和自定义函数进行匹配就可以了. 如: 自定义的退出函数是OnClose(),则在BEGIN_MESSAGE_MAP中 ...
- The 2015 China Collegiate Programming Contest E. Ba Gua Zhen hdu 5544
Ba Gua Zhen Time Limit: 6000/4000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- 【Oracle】配置oracle数据库最大连接数
数据库中教你如何修改ORACLE最大连接数 Oracle的连接数相关参数:processes.sessions. Oracle的sessions是个派生值,由processes的值决定,session ...
- 自定义UICollectionViewLayout之瀑布流
目标效果 因为系统给我们提供的 UICollectionViewFlowLayout 布局类不能实现瀑布流的效果,如果我们想实现 瀑布流 的效果,需要自定义一个 UICollectionViewLay ...
- ASP.NET 操作Cookie详解 增加,修改,删除
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它是网景公司的前雇员Lou Montulli在1993年3 ...