JFace进度条

本文介绍如何使用Java实现异步任务,并通过进度监控对话框展示任务执行过程。具体包括创建一个自定义的RunnableWithProgress接口实现类,用于执行任务和更新进度,以及使用ProgressMonitorDialog来显示进度对话框。通过代码示例展示了任务执行的流程,包括任务初始化、工作量计算、业务逻辑执行和最终结果展示。
摘要由CSDN通过智能技术生成
Java代码   收藏代码
  1. someButton.addSelectionListener( new  SelectionAdapter() {  
  2.                 public   void  widgetSelected(SelectionEvent e) {  
  3.                     IRunnableWithProgress runnable = new  IRunnableWithProgress () {  
  4.                         final   byte [][] result =  new   byte [ 1 ][];  
  5.                         //实现接口中的execute方法:   
  6.                         protected   void  execute(IProgressMonitor monitor)  throws  CoreException {  
  7.                            //具体的业务逻辑:   
  8.                              
  9.                         }  
  10.                          
  11.   
  12.                        //实现接口中的run方法,该方法是一个同步方法:   
  13.                        public   synchronized   final   void  run(IProgressMonitor monitor)  
  14.                          throws  InvocationTargetException, InterruptedException {  
  15.                            try  {  
  16.                                //总的工作量   
  17.                                int  totalWork = IProgressMonitor.UNKNOWN;  
  18.                                monitor.beginTask("A Progress monitor dialog example..."1000 );  
  19.                                if  (result[ 0 ] ==  null ){  
  20.                                    totalWork = 400 ;  
  21.                                }  
  22.                                monitor.worked(totalWork);  
  23.   
  24.                                //执行业务逻辑:   
  25.                                execute(monitor);  
  26.                                if  (result[ 0 ] !=  null ) {  
  27.                                    totalWork = 1000 ;  
  28.                                }else  {  
  29.                                    totalWork = 700 ;  
  30.                                }  
  31.                                monitor.worked(totalWork);  
  32.                            
  33.                            } catch  (CoreException e) {  
  34.                                throw   new  InvocationTargetException(e);  
  35.                            } catch  (OperationCanceledException e) {  
  36.                                throw   new  InterruptedException(e.getMessage());  
  37.                            }finally  {  
  38.                                monitor.done();  
  39.                            }  
  40.                        }  
  41.                     };  
  42.                     try  {  
  43.                         new  ProgressMonitorDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell()).run( truetrue , runnable);  
  44.                     } catch  (InvocationTargetException e1) {  
  45.                         // TODO Auto-generated catch block   
  46.                         e1.printStackTrace();  
  47.                     } catch  (InterruptedException e1) {  
  48.                         // TODO Auto-generated catch block   
  49.                         e1.printStackTrace();  
  50.                     }   
  51.                 }  
  52.             }); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值