2

如何定义 HTMLPanel 的 ID?当然,我可以用 a 包围 HTML,<div id="anID">但这也不会设置面板的 ID。

4

2 回答 2

6
htmlPanel.getElement().setId("myId");

如果面板是在 UiBinder 模板中定义的,那么您必须通过“ui:field”在 Java 类中使其可访问:

<g:HTMLPanel ui:field="htmlPanel">...</g:HTMLPanel>
...

@UiField
HTMLPanel htmlPanel;

public MyWidget() {
    initWidget(uiBinder.createAndBindUi(this));
    htmlPanel.getElement().setId("myId");
}

注意:使用<g:HTMLPanel id="myId">不起作用。

有一个原因,为什么 GWT 小部件的使用 id 没有变得更简单:

您必须非常小心,不要在同一页面上两次使用相同的 id。由于自然的重用因素,小部件尤其容易发生这种情况。(不仅可以重复使用小部件,还可以重复使用父小部件......)

因此,例如,如果 MyWidget 可以在您的页面文档中同时出现多次,您必须确保每次都设置不同的 id。可以这样做,如果需要,可以使用com.google.gwt.dom.client.Document.createUniqueId().

或者,如果可能,可以使用 CSS 类而不是 id(因为 css 类可以而且应该在同一页面上重复使用)。

于 2012-10-14T16:36:04.093 回答
5

你可以这样做:

htmlPanel.getElement().setId( "yourId" );

这适用于任何小部件/元素。

于 2012-10-14T16:11:42.537 回答