我可以为HTMLPanel定义ID吗?

mic*_*ica 2 gwt

如何定义HTMLPanel的ID?因为我可以将html放在一边但是这个伤口也没有设置面板的ID.

Chr*_*her 6

htmlPanel.getElement().setId("myId");
Run Code Online (Sandbox Code Playgroud)

如果面板是在UiBinder模板中定义的,那么你必须通过"ui:field"在Java类中访问它:

<g:HTMLPanel ui:field="htmlPanel">...</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)
...

@UiField
HTMLPanel htmlPanel;

public MyWidget() {
    initWidget(uiBinder.createAndBindUi(this));
    htmlPanel.getElement().setId("myId");
}
Run Code Online (Sandbox Code Playgroud)

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

有一个原因,为什么使用ID不会使GWT小部件更简单:

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

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

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


小智 5

你可以这样做:

htmlPanel.getElement().setId( "yourId" );
Run Code Online (Sandbox Code Playgroud)

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