在GWT中的setVisible(false)之后,HTMLPanel不会消失

时间:2014-12-09 14:54:14

标签: gwt visibility

我有HTMLPanel包含一些元素

<g:HTMLPanel ui:field="panel">
   <div>One</div>
   <div>Two</div>
</g:HTMLPanel>

此外,我还有一个CheckBox,用于设置面板的可见性。

 @UiHandler("myCheckBox")
    void doClick(ClickEvent event) {
       panel.setVisible(!myCheckBox.getValue());
    }

但是当我设置panel.setVisible(false)时,内部div仍然可见。在firebug中,我的面板是

<div aria-hidden="false">
   <div>One</div>
   <div>Two</div>
</div>

和用户代理样式表

div{
   display:block;
}

为什么我的内部元素仍然可见,以及为什么HTMLPanel不会消失。请解释一下。如果我的解决方案不是最好的,请给我更好的建议。

1 个答案:

答案 0 :(得分:0)

如果您将在<g:HTMLPanel ui:field="panel"> </g:HTMLPanel>内部的 ui.xml 中直接编写HTML,GWT将不会嵌套它,因为它只会嵌套GWT小部件。

因此,从ui.xml中删除div,在IMPL类中使用:

HTML html = new HTML("<div>One</div> <div>Two</div>");
panel.add(html);