我正在使用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