1

我的布局结构在图像中在此处输入图像描述

图片简介: HTMLPanel 是 RootPanel 和 2 个 Vertical Panels,一个 header 和其他内容 Panels。第二个垂直面板有 DockLayoutPanel。
现在我的问题是当我运行
主页的项目代码时我的 DockLayout 没有显示

<g:HTMLPanel>
     <g:VerticalPanel ui:field="contentPane" ></g:VerticalPanel>
     <g:VerticalPanel ui:field="headerPane" styleName="{style.upper-titlebar-container}" ></g:VerticalPanel>
</g:HTMLPanel>

内容面板代码

<g:HTMLPanel>
        <g:DockLayoutPanel unit='EM'>
             <g:north size='4'>
                <g:Label> Hello </g:Label>
             </g:north>
             <g:east size="7.0">
                  <g:HTMLPanel ui:field="EdgeBandingPane"></g:HTMLPanel>
             </g:east>
             <g:west size="5.8" >
                  <g:HTMLPanel ui:field="PartsPane"></g:HTMLPanel>
             </g:west>

             <g:center >
                  <g:HTMLPanel ui:field="PanelsPane"></g:HTMLPanel>
             </g:center>
             <g:south size="5">
               <g:Label> Hello </g:Label>
             </g:south>
        </g:DockLayoutPanel>

    </g:HTMLPanel>

我添加的小部件显示在输出中,但我的 Dock 面板未显示。我没有得到问题
提前谢谢

4

1 回答 1

4

GWT *LayoutPanels 在嵌套在 *Panels(没有 Layout 的那些)中时不会自动工作。那是因为布局的不同方法:

  • 布局面板使用绝对 CSS 布局,其中大小必须由父元素给出
  • “正常”面板随着内容的增长而增长

要将 LayoutPanels 嵌套在 Panels 中,您必须设置固定尺寸并在尺寸发生变化时调用 onResize。但或者,您可以尝试仅使用 LayoutPanels。如果我是对的,您想要一个具有动态高度的标题(高度由其内容定义)。在这种情况下,您应该使用 HeaderPanel。对于标题,您可以使用 VerticalPanel。作为(可交换)内容的容器,您可以使用 SimpleLayoutPanel,它是一个托管一个小部件的 LayoutPanel:

<g:HeaderPanel>
    <g:VerticalPanel ui:field="headerPane"></g:VerticalPanel>
    <g:SimpleLayoutPanel ui:field="contentPane"></g:SimpleLayoutPanel>
</g:HeaderPanel>

从我的角度来看,内容的 DockLayoutPanel 周围的额外 HTMLPanel 应该被删除,以确保从外部正确设置大小:

<g:DockLayoutPanel unit='EM'>
     <g:north size='4'>
        <g:Label> Hello </g:Label>
     </g:north>
     <g:east size="7.0">
          <g:HTMLPanel ui:field="EdgeBandingPane"></g:HTMLPanel>
     </g:east>
     <g:west size="5.8" >
          <g:HTMLPanel ui:field="PartsPane"></g:HTMLPanel>
     </g:west>
     <g:center >
          <g:HTMLPanel ui:field="PanelsPane"></g:HTMLPanel>
     </g:center>
     <g:south size="5">
       <g:Label> Hello </g:Label>
     </g:south>
</g:DockLayoutPanel>

编辑: HTMLPanel 应该只用于“手动”布局。不要使用它来仅包装另一个小部件/面板。

于 2013-09-17T07:43:16.547 回答