我正在使用GWT庫(gwt-openlayers),它允許我創建包含任意HTML的地圖彈出窗口,類似於Google Maps。我需要這個HTML來包含一個GWT Button小部件。將GWT小部件插入div元素
我創造了一些HTML元素的即時這樣的:
Element outerDiv = DOM.createDiv();
outerDiv.getStyle().setOverflow(Overflow.HIDDEN);
outerDiv.getStyle().setWidth(100, Unit.PCT);
outerDiv.appendChild(new HTML(mapPOI.getHtmlDetails()).getElement());
Button popupButton = new Button("View Property");
popupButton.getElement().getStyle().setFloat(com.google.gwt.dom.client.Style.Float.RIGHT);
outerDiv.appendChild(popupButton.getElement());
然後我得到這些元素的源HTML調用
和插入這個網站進入我的地圖標記。現在我的地圖標記顯示內容ok,包括按鈕。但是,該按鈕不會響應任何事件!從我可以收集的信息來看,這是因爲onAttach()方法上的按鈕永遠不會被調用。
有沒有更好的方法來做到這一點?
感謝,
喬恩
~~~~編輯~~~~
現在我想這樣做,這似乎是一種新的方式是找的接受的方法在其他類似的職位。
首先,我創造我的div:
String divId = "popup-" + ref;
String innerHTML = "<div id=\"" +divId + "\"></div>";
然後我加入這個我的地圖彈出窗口並顯示它(它添加到DOM)。彈出顯示後,我得到的元素如下,並試圖環繞它HTMLPanel:
Element element = Document.get().getElementById(divId);
HTMLPanel popupHTML = HTMLPanel.wrap(element);
我的div元素被成功取出。但是,HTMLPanel.wrap(element);
未完成。這樣做的原因是,wrap(..)
電話RootPanel.detachOnWindowClose(Widget widget)
,其中包括以下斷言:
assert !widgetsToDetach.contains(widget) : "detachOnUnload() called twice "
+ "for the same widget";
assert !isElementChildOfWidget(widget.getElement()) : "A widget that has "
+ "an existing parent widget may not be added to the detach list";
我把一些斷點,似乎第二斷言失敗!
有沒有人有任何想法,爲什麼這可能是這種情況?如果失敗這個斷言真的導致該方法的完全失敗(不返回)?
我試過這種方法,但它似乎不工作。它甚至不會超過'RootPanel.get(「divId」);'但它也不會拋出異常!很奇怪。 – DeadPassive 2012-07-16 12:18:39