Open Class从ViewPart扩展到另一个

时间:2013-06-16 21:44:45

标签: java eclipse view swt workbench

我在eclipse中用Java编写程序。 我有两个从超类ViewPart扩展的类。 现在我想自动打开其中一个类(这意味着当我运行程序时),而另一个应该通过第一个类的UI上的按钮打开。但我不知道如何手动打开ViewPart类。

我现在尝试了

ActorCalendar actorCalendar = new ActorCalendar();                 尝试{                     actorCalendar.getSite()。getPage()。showView(“id”,null,IWorkbenchPage.VIEW_VISIBLE);                 } catch(PartInitException e1){                     // TODO自动生成的catch块                     e1.printStackTrace();                 }

这里的ActorCalendar类是从ViewPart类扩展的类。此代码块在ViewPart扩展的另一个类的Button中实现。 但是后来我在实现这个代码块的类中得到了一个N​​ullPointerException。在该行:

actorCalendar.getSite()。getPage()。showView(“id”,null,IWorkbenchPage.VIEW_VISIBLE);

我做错了什么?

我希望有人可以帮助我。

谢谢!

2 个答案:

答案 0 :(得分:0)

你想要org.eclipse.ui.IWorkbenchPage.showView(String)。这将允许您按ID打开视图。如果您的按钮位于第一个视图的工具栏中,则可以使用 getSite()。getPage()从视图中获取工作台页面。

答案 1 :(得分:0)

ActorCalendar actorCalendarView = new ActorCalendar();

尝试{                       IViewPart view = PlatformUI.getWorkbench()。getActiveWorkbenchWindow()。getActivePage()。showView(“de.uhd.ifi.se.pcm.bppcm.ui.ActorCalendar”);                       if(查看instanceof ActorCalendar){                        actorCalendarView =(ActorCalendar)视图;                        actorCalendarView.doStuff();                       }                      } catch(PartInitException ex){                       //如果无法显示视图,showView()可能会抛出异常                       ex.printStackTrace();                      }

这对我有用!