如何使用GWT 2.4混合HTMLPanel和VerticalPanel?

时间:2011-11-21 23:15:54

标签: gwt alignment

我尝试将verticalPanel添加到HTMLPanel我尝试将其添加到html代码中时遇到错误。

我尝试做的是创建一个围绕我的小部件边框的面板,因为它更像是一个垂直对齐模式,我选择使用verticalPanel。

当我尝试在html table,tr或td标签之外添加时出现编译错误,但这就是我想要显示边框的想法。

以下是代码段:

<g:HTMLPanel ui:field="mainPanel" >
  //Putting verticalPanel here causes a compile error
  <table width="100%">
  //Putting verticalPanel here causes a compile error
    <tr>
  //Putting verticalPanel here causes a compile error
    <td>
            <g:Label ui:field="title"></g:Label>
    </td>
</tr>

这是一个好方法,如果是这样,我该怎么做,还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

您需要阅读小部件的javadoc。

  • 如果窗口小部件实现HasText,则可以在其标记之间放置文本
  • 如果它实现了HasHTML,则可以在其标记之间放置HTML
  • 否则(因为所有小部件都实现了HasWidgets),您只能在其标记之间放置小部件。
  • 某些小部件具有配置子标签,其中子标签名称以小写字母开头。
  • 某些小部件只允许一个子小部件。这些是SimplePanel的扩展。

因此,如果您尝试将HTML标记放在VerticalPanel之间,则会遇到错误,因为VerticalPanel未实现hasText或hasHtml。

HTMLPanel不实现HasHTML,但是您可以放置​​混合的小部件和HTML,因为它的内容解析器专门用于识别放置在其标记内的HTML。这就是为什么它被称为HTMLPanel。

以下情况不可接受,导致编译错误:

<g:HTMLPanel>
  <g:VerticalPanel>
    <TABLE><TR><TD>Hello</TD></TR></TABLE>
  </g:VerticalPanel>
</g:HTMLPanel>

因为HTML位于VerticalPanel标记内。