zoukankan      html  css  js  c++  java
  • Swt/Jface进度条

    Swt/Jface进度条

    处理长时间的任务的时候常需要进度条显示,有几种实现方式
    1,普通的进度条
    import java.lang.reflect.InvocationTargetException;

    import org.eclipse.core.runtime.IProgressMonitor;
    import org.eclipse.jface.dialogs.ProgressMonitorDialog;
    import org.eclipse.jface.operation.IRunnableWithProgress;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;


    public class TestProgress {
        
    static boolean stopflg = false;
        
    /**
         * Launch the application
         * 
    @param args
         
    */

        
    public static void main(String[] args) throws Exception{
            
    final Display display = Display.getDefault();
            
    final Shell shell = new Shell();
            shell.setSize(
    500375);
            shell.setText(
    "SWT Application");
            
            
    //
            IRunnableWithProgress runnable = new IRunnableWithProgress(){
                
    public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                    monitor.beginTask(
    "generate"30);
                    
    for(int i=0;i<100;i++){
                        
    if(monitor.isCanceled()){
                            
    return;
                        }

                        monitor.worked(
    1);
                        Thread.sleep(
    50);
                    }

                    
                    monitor.done();
                }

            }
    ;
            
    new ProgressMonitorDialog(shell).run(truetrue, runnable);
            shell.open();
            shell.layout();
            
    while (!shell.isDisposed()) {
                
    if (!display.readAndDispatch())
                    display.sleep();
            }

        }


    }

    2,反复循环的进度条
    import java.lang.reflect.InvocationTargetException;

    import org.eclipse.core.runtime.IProgressMonitor;
    import org.eclipse.jface.dialogs.ProgressMonitorDialog;
    import org.eclipse.jface.operation.IRunnableWithProgress;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;


    public class TestProgress {
        
    static boolean stopflg = false;
        
    /**
         * Launch the application
         * 
    @param args
         
    */

        
    public static void main(String[] args) throws Exception{
            
    final Display display = Display.getDefault();
            
    final Shell shell = new Shell();
            shell.setSize(
    500375);
            shell.setText(
    "SWT Application");
            
            
    //
            IRunnableWithProgress runnable = new IRunnableWithProgress(){
                
    public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                    monitor.beginTask(
    "generate"30);
                    
    int i=0;
                    
    while(true){
                        
    if(stopflg){
                            
    break;
                        }

                        i
    ++;
                        
    if(i==30){
                            i
    =0;
                            monitor.beginTask(
    "generate"30);
                        }

                        monitor.worked(
    1);
                        Thread.sleep(
    100);
                    }

                    monitor.done();
                }

            }
    ;
            
    new ProgressMonitorDialog(shell).run(truetrue, runnable);
            shell.open();
            shell.layout();
            
    while (!shell.isDisposed()) {
                
    if (!display.readAndDispatch())
                    display.sleep();
            }

        }


    }

    3,rcp中后台任务的进度条
    使用Job建立后台任务,只需要设置job.setUser(true)进度条就出现了,和上边一样,进度条需要自己来控制进度。如果做一个cool的进度条,就看你如何让进度条显示出实际的任务进程。
  • 相关阅读:
    U盘安装Ubuntu 10.4 Server
    MySQL操作使用
    Fedora17安装MySQL及配置
    笔记:重构
    Java 并发之线程安全
    Java 并发之共享对象
    UTF8 与 UTF16 编码
    matplotlib 初使用
    用 ggplot2 在同一个图上画多条颜色不同的线
    完成情况(一)
  • 原文地址:https://www.cnblogs.com/kentyshang/p/858303.html
Copyright © 2011-2022 走看看