我可以为HTMLPanel定义ID吗?

时间:2012-10-14 14:51:38

标签: gwt

如何定义HTMLPanel的ID? 因为我可能会把这个html包围,但是这个伤口也没有设置小组的ID。

2 个答案:

答案 0 :(得分: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">不起作用。

有一个原因,为什么使用ID并不简化GWT小部件:

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

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

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

答案 1 :(得分:5)

你可以这样做:

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

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