2009-04-21 6 views
0

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

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

private static MyPersonalTabPanel mypersonalTabPanel; 

public XYZ { 
    myperosonalTabPanel = this; 
} 

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

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

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

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

+0

Я немного растерялся в отношении того, что намеревается - вы хотите найти способ добавить вкладку из другого класса? или вы спрашиваете, как заставить его работать, используя статическое поле? – Chii

ответ

1

Проверьте начальный код? Вам нужно убедиться, что экземпляр XYZ, к которому вы хотите добавить вкладку, - это тот, который был создан вашим последним звонком на «новый 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).

Смежные вопросы