zoukankan      html  css  js  c++  java
  • 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
                    }
            }
        }
        
    }

    最终效果如下:

  • 相关阅读:
    【并查集学习笔记】------迟来的总结
    【Ant Trip】题解
    【数星星 Stars】题解
    【From Hero to Zero】题解
    营救 【题解】
    js获取浏览器视窗尺寸
    js基础拖拽二
    js基础拖拽一
    js检测浏览器flash支持
    js操作cookie
  • 原文地址:https://www.cnblogs.com/langdangyunliu/p/4609494.html
Copyright © 2011-2022 走看看