我创建了一个窗口小部件,它是Composite的一个子类,并且其中包含一个com.extjs.gxt.ui.client.widget.Viewport
。在这个视口中,我添加了我的头部组件,一个LayoutComponent(最初为空)和我的页脚组件。动态更新GWT复合窗口小部件的内容
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:我通过在构造函数的末尾,设置了一切......这样的事情(有些代码的可读性删除)调用initWidget初始化的组合构件:
MyComposite myComposite = new MyComposite(...);
RootPanel.get("myComposite").add(myComposite);
并猜测什么......那么工作!我看到了。标题显示,页脚显示,此时内容为空。好。然后我打电话来显示并添加内容。不完全如下,但例如:
myComposite.show(new Label(...));
但没有任何反应。代码确实运行,add(...)方法从show(...)方法调用,没有例外,但没有任何(新)出现。我不使用标签,但这不是问题(经过验证,适用于其他地方)。当我在浏览器中检查DOM时,发现内容中有一个div,就像最初一样,但它仍然是空的(即没有内容)。
我错过了什么?
谢谢!
我还应该注意到LayoutContainer是com.extjs.gxt.ui.client.widget.LayoutContainer,并且它自己也可以工作。我在stackoverflow.com上发现了一个类似的问题 - 某人扩展了一些面板组件,根本没有任何东西出现,并被建议扩展Composite而实际上包含面板。虽然这些都是很重要的考虑因素,但我不明白为什么这件事会影响到这件事是否有效(显示)! – Learner 2011-06-17 12:47:40