Я создал виджет, который является подклассом Composite и имеет в нем com.extjs.gxt.ui.client.widget.Viewport
. В этом окне просмотра я добавил компонент заголовка, компонент LayoutComponent (изначально пустой) и компонент нижнего колонтитула. Я инициализировал составной виджет, вызвав initWidget в конце конструктора, который все настраивает... примерно так (некоторый код удален для удобства чтения):
public class MyComposite extends Composite {
...
public MyComposite(...) {
viewport = new Viewport();
viewport.add(new Header());
content = new LayoutContainer();
viewport.add(content);
viewport.add(new Footer());
initWidget(viewport);
}
public void show(Widget... widgets) {
content.removeAll();
for (Widget widget: widgets) content.add(widget);
}
}
Затем я добавляю экземпляр этого в RootPanel:
MyComposite myComposite = new MyComposite(...);
RootPanel.get("myComposite").add(myComposite);
И знаете что... это работает! Вижу. Показан заголовок, показан нижний колонтитул, а содержимое на данный момент пустое. Хорошо. Затем я звоню, чтобы показать и добавить к нему материал. Не совсем так, а например:
myComposite.show(new Label(...));
Но ничего не происходит. Код запускается, метод add(...) вызывается из метода show(...), исключений нет, но ничего (нового) не появляется. Я не использую метку, но это не проблема (проверено, это работает в других местах). Когда я проверяю DOM в браузере, я вижу, что есть div для содержимого, как и было изначально, но он остался пустым (т.е. без содержимого тела).
Что мне не хватает?
Спасибо!