如何在DockLayoutPanel中显示和隐藏小部件?

mem*_*und 1 java gwt

我有以下布局,并希望动态显示和隐藏西面板:

<g:DockLayoutPanel ui:field="dock">
 <g:west><g:Label text="west" ui:field="west"/></g:west>
 <g:east><g:ToggleButton text="toggle"/></g:east>
 <g:center>center</g:center>
</g:DockLayoutPanel>
Run Code Online (Sandbox Code Playgroud)

对于显示/隐藏,我定义了一个切换按钮.它执行:

@UiField
Label west;

@UiField
DockLayoutPanel dock;

    dock.remove(west);
    //or
    dock.addWest(west);
Run Code Online (Sandbox Code Playgroud)

我想将内容保留在中心元素中.当我隐藏west,一切正常,center内容调整相应,以占用自由空间.当我再次点击ToggleButton并执行该addWest()方法时,我得到以下异常:

com.google.gwt.event.shared.UmbrellaException: Exception caught: No widget may be added after the CENTER widget
Run Code Online (Sandbox Code Playgroud)

如何再次添加/显示西部内容,并使中心内容相应调整大小?

Abh*_*aja 7

您可以使用api setWidgetHidden()隐藏停靠面板中的所有子项.这个API可以从gwt 2.5版本获得.