我創建了一個窗口小部件,它是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