Добавление вкладки GWT из другой вкладки - PullRequest
0 голосов
/ 22 апреля 2009

Я хочу добавить вкладку к определенной панели вкладок из области содержимого. Область содержимого является динамической и, как таковая, находится в другом файле класса. Единственный известный мне способ получить текущее состояние панели вкладок (не создавать новый объект панели вкладок) - создать статический метод и переменную для доступа к объекту. Однако у меня возникают проблемы с внесением каких-либо изменений в панель вкладок после того, как я ее получу. Я могу вызывать функции внутри него без особых проблем, таких как получение строк, но я не могу добавить вкладку, что мне и нужно сделать. Вот общая суть:

в одном классе с именем XYZ:

private static MyPersonalTabPanel mypersonalTabPanel;

public XYZ {
  myperosonalTabPanel = this;
}

в моем другом файле, по нажатию кнопки, я запускаю это:

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

Я могу использовать свою функцию «getXYZTabPanel ()» без ошибок, но когда я пытаюсь «добавить», она просто падает с белым экраном, без соответствующих ошибок. Любая помощь? Я видел проекты, добавляющие вкладки ранее, но не могу найти ничего, делающего это через статический объект, подобный этому.

У меня пока нет этого внутри метода onClick. Должен ли я сделать это, чтобы получить доступ к статической переменной сеанса? Это в основном называется в момент загрузки страницы.

1 Ответ

1 голос
/ 01 мая 2009

Проверьте порядок инициализации? Вы должны убедиться, что экземпляр 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");
  }
}

Убедитесь, что метод createPanel () TestClass вызывается до вызова addTab (Widget).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...