Eclipse RCP 開發中的進度條顯示

 進度條是構建良好的用戶界面必備的組件之一,下面總結一下在基於 Eclipse RCP 開發應用程序時顯示進度條的幾種方法 :
  • 使用 ProgressMonitorDialog 對話框

ProgressMonitorDialog 是用於顯示進度條的對話框,它必須配合接口 IrunnableWithProgress 進行使 用,        IRunnableWithProgress 定義了一個可監控進度的任務對象 , 針對具體的業務邏輯實現其 run(IProgressMonitor monitor) 方法即可,整個的用法如下代碼所示:

  1. ProgressMonitorDialog pmd = new ProgressMonitorDialog(window.getShell());  
  2. IRunnableWithProgress rwp = new IRunnableWithProgress() {  
  3.     @Override  
  4.     public void run(IProgressMonitor monitor){  
  5.           //totalWork爲IProgressMonitor.UNKNOWN時表示不知道任務的總量   
  6.           //將在進度條上顯示一個來回移動的進度條   
  7.           monitor.beginTask("任務1" + "", IProgressMonitor.UNKNOWN);  
  8.           //TODO 相應的業務邏輯   
  9.           monitor.done();  
  10.         }  
  11. }  
  12. pmd.run(true, false, rwp);  

方法 run(boolean fork,boolean canceled,IrunnableWithProgress p) 中,第一個參數 fork 表示是否在事件隊列(即 UI 線程)中運行,如果設置爲 false, 表示將在事件隊列中運行,第二個參數 canceled 表示任務是否能夠被取消。

執行 pmd.run(false, false, rwp) 時的進度條顯示:


  • 使用 RCP 平臺的進度條服務 IProgressService ;

IProgressService 是 RCP 提供給客戶程序執行一個耗時任務的方便快捷的方法,具體用法如下

1)執行非UI的操作時

  1. IProgressService progressService = PlatformUI.getWorkbench().getProgressService();    
  2.     progressService.busyCursorWhile(new IRunnableWithProgress(){    
  3.        public void run(IProgressMonitor monitor) {    
  4.           // 非UI線程,只能進行非UI的操作     
  5.        }    
  6.     });  


2)執行UI的操作時

  1. progressService.runInUI(    
  2.       PlatformUI.getWorkbench().getProgressService(),    
  3.        new IRunnableWithProgress() {    
  4.           public void run(IProgressMonitor monitor) {    
  5.              // UI主線程,可進行UI操作     
  6.           }    
  7.        },    
  8.        Platform.getWorkspace().getRoot());  
  • 使用 Job 完成耗時任務將會自動顯示一個進度條

Job 默認支持進度條的顯示,啓動一個Job時會自動打開一個進度條,如果Job調用了方法setUser(true),將會彈出一個進度條對話框表示是用戶作業,如果setUser(true),則表示作業在後臺運行,進度條將在進度條視圖中運行。

  • 在嚮導中實現進度條,調用方法如下:

IWizard w;
w.getContainer().run(fork, cancelable, runnable);

以上代碼表示在當前嚮導頁上運行一個可監控進度的任務;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章