Eclipse RCP 开发中的进度条显示

进度条是构建良好的用户界面必备的组件之一,下面总结一下在基于 Eclipse RCP 开发应用程序时显示进度条的几种方法

  • 使用 ProgressMonitorDialog 对话框

ProgressMonitorDialog 是用于显 示进度条的对话框,它必须配合接口 IrunnableWithProgress 进行使 用,        IRunnableWithProgress 定义了一个可监控进度的任务对象 , 针对具体的业务逻辑实现其 run(IProgressMonitor monitor) 方法即可,整个的用法如下代码所示:

ProgressMonitorDialog pmd = new ProgressMonitorDialog(window.getShell()); IRunnableWithProgress rwp = new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor){ //totalWork为IProgressMonitor.UNKNOWN时表示不知道任务的总量 //将在进度条上显示一个来回移动的进度条 monitor.beginTask("任务1" + "", IProgressMonitor.UNKNOWN); //TODO 相应的业务逻辑 monitor.done(); } } 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的操作时

IProgressService progressService = PlatformUI.getWorkbench().getProgressService(); progressService.busyCursorWhile(new IRunnableWithProgress(){ public void run(IProgressMonitor monitor) { // 非UI线程,只能进行非UI的操作 } });


2)执行UI的操作时

progressService.runInUI( PlatformUI.getWorkbench().getProgressService(), new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { // UI主线程,可进行UI操作 } }, Platform.getWorkspace().getRoot());

  • 使用 Job 完成耗时任务将会自动显示一个进度条

Job 默认支持进度条的显示,启动一个Job时会自动打开一个进度条,如果Job调用了方法setUser(true),将会弹出一个进度条对话框表示是用户作业,如果setUser(true),则表示作业在后台运行,进度条将在进度条视图中运行。

  • 在向导中实现进度条,调用方法如下:

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

以上代码表示在当前向导页上运行一个可监控进度的任务;

你可能感兴趣的:(Eclipse,RCP)