如何使用“详细信息”按钮(如Eclipse工作区作业)实现Eclipse进度栏

时间:2018-07-23 15:59:59

标签: java eclipse swt rcp

我正在开发Eclipse RCP应用程序,我想通过一个带有“在后台运行”,“取消”和“详细信息”等按钮的对话框来实现Eclipse工作区作业。我尝试了所有选择,但我的所有努力都没有取得成果。但是,我可以使用带有取消按钮的ProgressMonitor对话框来创建ProgressBar。我想实现下面给出的图像。请在这方面帮助我。我还浏览了以下链接以及其他链接。我也尝试了IProgressService,但是没有用。目前,我正在使用Eclipse Photon版本。

https://www.eclipse.org/articles/Article-Concurrency/jobs-api.html

enter image description here

我在下面提供工作区作业的代码

public void show11() {
Job job =
    new WorkspaceJob("name") {
      @Override
      public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {

        for (int i = 0; i < 10; i++) {
          System.out.println("This is a MYJob");
          try {
            TimeUnit.SECONDS.sleep(1);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          monitor.subTask("Copying file " + (i + 1) + " of " + "workload" + "...");
        }

        return Status.OK_STATUS;
      }
    };

  job.setUser(true);
  job.schedule();

  try
   {
     job.join();
   }
  catch (InterruptedException e)
   {
     //
   }

}

1 个答案:

答案 0 :(得分:4)

最后我解决了这个问题。假定Eclipse RCP应用程序默认设置为“在后台运行”。就我而言,我不得不从Eclipse切换此选项,但仍然无法正常工作。我已经手动将其设置为在eclipse rcp中为false。我在下面提供。代码。

WorkbenchPlugin.getDefault().getPreferenceStore().setValue("RUN_IN_BACKGROUND", false);

面对此类问题的人,可以在开发Eclipse rcp应用程序时以编程方式设置此值。

我要感谢Greg Sir(greg-449)提供了一些提示和信息。