从其他选项卡添加GWT选项卡

时间:2009-04-21 21:15:30

标签: gwt

我想从内容区域内的某个标签栏添加标签。内容区域是动态的,因此位于不同的类文件中。我知道获取选项卡栏的当前状态(不创建新的选项卡栏对象)的唯一方法是创建一个静态方法和变量来访问该对象。但是,在我得到标签栏后,我在修改标签栏时遇到了问题。我可以在其中调用函数而不会有太多麻烦,例如检索字符串,但我无法添加选项卡,这是我需要做的。这是一般要点:

在一个名为XYZ的类中:

private static MyPersonalTabPanel mypersonalTabPanel;

public XYZ {
  myperosonalTabPanel = this;
}

在我的另一个文件中,点击一个按钮,我就触发了这个:

MyPersonalTabPanel.getAppInstance().getXYZTabPanel().add(mywidget, "My Widget");

我可以使用我的函数“getXYZTabPanel()”没有错误,但是当我尝试“添加”时,它只会崩溃,白屏,没有相关错误。有帮助吗?我之前看过项目添加标签,但是找不到像这样的静态对象。

我还没有在onClick方法中使用它,为了让我访问静态会话变量,我是否必须这样做?它基本上被称为页面加载的那一刻。

1 个答案:

答案 0 :(得分:1)

检查初始化顺序?您需要确保要添加选项卡的XYZ实例是最近一次调用“new XYZ()”创建的实例,并且您需要确保它已经在您之前已经新建了尝试添加标签。

另外,我假设XYZ扩展了MyPersonalTabPanel,它扩展了TabPanel?为了澄清,此代码是否适用于您的情况:

public class MyPersonalTabPanel extends TabPanel {
  public static MyPersonalTabPanel instance;

  public MyPersonalTabPanel() {
    instance = this;
  }
}

public class TestClass {
  public void createPanel() {
    RootPanel.get().add(new MyPersonalTabPanel());
  }
  public void addTab(Widget widget) {
    MyPersonalTabPanel.instance.add(widget, "My Widget");
  }
}

确保在addTab(Widget)调用发生之前调用TestClass的createPanel()。