使用UiBinder时,创建这种简单布局的首选方法是什么?

FlowPanel:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:style>
    .outer {
      display: table;
      height: 100%;
      width: 100%;
    }
    .inner {
      background: #DDD;
      display: table-cell;
      vertical-align: middle;
    }
  </ui:style>
  <g:FlowPanel styleName="{style.outer}">
    <g:FlowPanel styleName="{style.inner}">
      <g:Label ui:field="someLabel"/>
    </g:FlowPanel>
  </g:FlowPanel>
</ui:UiBinder>


HTMLPanel:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <ui:style>
    .outer {
      display: table;
      height: 100%;
      width: 100%;
    }
    .inner {
      background: #DDD;
      display: table-cell;
      vertical-align: middle;
    }
  </ui:style>
  <g:HTMLPanel styleName="{style.outer}">
    <div class="{style.inner}">
      <g:Label ui:field="someLabel"/>
    </div>
  </g:HTMLPanel>
</ui:UiBinder>


编辑:我知道它们在渲染时会生成相同的html,我想知道是否有理由使用一种样式替代另一种样式。

javadocs说FlowPanel是最简单的面板,但是在什么时候使用HTMLPanel成为首选。例如

<FlowPanel>
  <FlowPanel>
    <Widget>
  </FlowPanel>
  <FlowPanel>
    <Widget>
  </FlowPanel>
</FlowPanel>




<HTMLPanel>
  <div>
    <Widget>
  </div>
  <div>
    <Widget>
  </div>
</HTMLPanel>


谢谢。

UiBinder - HTMLPanel vs. div是一个非常相似的问题,但询问有关使用div与HTMLPanel的问题。

最佳答案

实际上,在您的情况下,它们将呈现相同的效果-div。除非您开始向FlowPanel添加更多元素,否则没有任何区别。

您可以在此处尝试FlowPanel行为:
http://examples.roughian.com/index.htm#Panels~FlowPanel

如果需要在页面上编写自己的自定义HTML代码,则应使用HTMLPanel。它允许在HTMLPanel标记内编写HTML代码。

例如,您无法使用FlowPanel做到这一点。

08-03 17:10