DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          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的進度條,就看你如何讓進度條顯示出實際的任務進程。

          posted on 2007-08-10 09:59 dreamstone 閱讀(5034) 評論(0)  編輯  收藏 所屬分類: SWT和插件開發

          主站蜘蛛池模板: 百色市| 佛山市| 涿鹿县| 福州市| 拜泉县| 和田县| 顺义区| 刚察县| 顺平县| 温州市| 年辖:市辖区| 德兴市| 成武县| 临桂县| 民勤县| 崇礼县| 灵武市| 临洮县| 万盛区| 确山县| 额尔古纳市| 桐乡市| 唐海县| 庄河市| 拉孜县| 都江堰市| 泾川县| 高安市| 潼关县| 临颍县| 区。| 瑞金市| 房产| 贵溪市| 舟曲县| 保亭| 临海市| 玉山县| 郁南县| 云安县| 岗巴县|