【问题标题】:How can I get the current tab while this tab is not active在此选项卡未处于活动状态时如何获取当前选项卡
【发布时间】:2017-09-22 05:36:59
【问题描述】:

我正在使用 Eclipse RCP 和 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 为空。

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

public void refresh(){
  currentTab.refresh();
}

所以我想知道如何在此选项卡未激活时获取当前选项卡(我正在另一个视图中进行修改)。 还是有其他方法可以刷新属性表页面?

【问题讨论】:

  • 感谢您的回答 :) 我可能应该更改问题标题,因为我的主要问题是“如何在此选项卡未激活时获取当前选项卡”

标签: java nullpointerexception eclipse-rcp propertysheet


【解决方案1】:

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

您也可以调用getCurrentTab 来查看是否有当前标签(如果没有,它将返回null)。

【讨论】:

  • 我确实调用了 getCurrentTab() 并且它返回 null。我无法理解的是,如果我得到 nullPointerException,那么刷新怎么会做得很好。我看到我的属性视图以正确的值刷新,一切似乎都很顺利,直到我检查控制台并看到当前选项卡有一个空值。我正在使用 selectionchanged 方法来填充属性选项卡,但是当我看到 TabSelectionListener 检查是否选择了选项卡时。在这种情况下,我需要在选择另一个元素时进行刷新...
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 2014-09-12
  • 1970-01-01
  • 2020-04-24
  • 2016-06-30
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多