隨筆 - 4  文章 - 10  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          處理長時間的任務的時候常需要進度條顯示,有幾種實現方式
          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-13 10:30 冬天出走的豬 閱讀(606) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 保定市| 龙山县| 社旗县| 青川县| 牙克石市| 易门县| 泗阳县| 志丹县| 乾安县| 莱州市| 景德镇市| 临海市| 平阳县| 湖州市| 富民县| 崇左市| 泌阳县| 咸丰县| 宝应县| 新绛县| 玛沁县| 团风县| 大洼县| 游戏| 通城县| 邢台市| 犍为县| 古交市| 兴宁市| 广西| 大丰市| 酒泉市| 泰和县| 梧州市| 施甸县| 浪卡子县| 尖扎县| 巴彦淖尔市| 鹿泉市| 乐清市| 无为县|