Java 当当前选项卡处于非活动状态时,如何获取当前选项卡

Java 当当前选项卡处于非活动状态时,如何获取当前选项卡,java,nullpointerexception,eclipse-rcp,propertysheet,Java,Nullpointerexception,Eclipse Rcp,Propertysheet,我正在使用EclipseRCP和EMF模型。我创建了自己的属性选项卡式工作表,而不是在视图中选择对象时刷新。在这里之前,一切都很顺利。然后,我想在修改模型时刷新属性选项卡。我在主属性页中添加了一个模型更改侦听器 public class MyTabbedPropertySheet extends TabbedPropertySheet{...} private void init(){ try{ MyModelChangeListener = new MyModelChangeList

我正在使用EclipseRCP和EMF模型。我创建了自己的属性选项卡式工作表,而不是在视图中选择对象时刷新。在这里之前,一切都很顺利。然后,我想在修改模型时刷新属性选项卡。我在主属性页中添加了一个模型更改侦听器

public class MyTabbedPropertySheet extends TabbedPropertySheet{...}


private void init(){
try{ 
  MyModelChangeListener = new MyModelChangeListener(){
  @Override
  public void refreshUI(){
  try{
    UMLModeler.getTransactionHelper().getEditingDomain().runExclusive(new Runnable() {
      @Override
      public void run(){
      refresh() //This is the eclipse TabbedPropertySheet refresh method
     }
    });
  }catch(){..}
   UMLModeler.getTransactionHelper().getEditingDomain().addResourceSetListener(MyModelChangeListener);
}catch{...}
之后,当我更改我的对象时,我的属性表实际上会刷新,但是我在eclipse类中有一个NullPointerException,因为currenttab为null

org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage中的方法

public void refresh(){
  currentTab.refresh();
}
因此,我想知道如何在当前选项卡不活动时获取当前选项卡(我正在另一个视图中进行修改)。
或者是否有其他方法刷新属性页?

您可能需要使用
TabbedPropertySheetPage
addTabSelectionListener
方法等待您感兴趣的选项卡被选中,然后更新选择侦听器中的选项卡

您也可以调用
getCurrentTab
查看是否存在当前选项卡(如果没有,它将返回
null

谢谢您的回答:)我可能应该更改问题标题,因为我的主要问题是“如何在该选项卡未激活时获取当前选项卡”我确实调用了getCurrentTab(),它返回null。我不明白的是,如果我得到了nullPointerException,为什么刷新会做得很好。我看到我的属性视图用正确的值刷新,一切似乎都很顺利,直到我检查控制台并看到当前选项卡有一个空值。我正在使用selectionchanged方法填充属性选项卡,但当我在中看到选项卡SelectionListener时,我会检查选项卡是否被选中。在这种情况下,我需要在选择另一个元素时进行刷新。。。