gxt将图像与组合框对齐

时间:2013-08-22 14:42:08

标签: java gwt gxt

我有一个需要与组合框对齐的loading.gif图像

<container:VerticalLayoutContainer addStyleNames="{mystyle}">
    <form:FieldLabel text="{constants.typ}" labelAlign="TOP">
        <form:widget>
            <form:ComboBox ui:field="type" width="300" allowBlank="true" forceSelection="true" triggerAction="ALL" />
        </form:widget>
    </form:FieldLabel>
    <g:Image resource="{loadingGif}" ui:field="Monimage" />
</container:VerticalLayoutContainer>

在我看来,我有一个数据库的列表库。 我试图将我的图像放在<form:widget>中,但是它会启动一个异常,表示我每个ui只能有一个元素:child。

使用此代码,我的图像位于组合框下,我需要它在它的右侧。 有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

当uiBinder解析器看到<form:widget>时,它会尝试调用方法FieldLabel#setWidget(theComponentUnderTheTag)

这就是为什么在<form:widget>标记下包含多个元素没有意义。

当我无法用GWT做我想做的事情时,我会回到一些普通的旧HTML。使用uiBinder,您可以使用HTMLPanel

实现此目的
<container:VerticalLayoutContainer addStyleNames="{mystyle}">
  <form:FieldLabel text="{constants.typ}" labelAlign="TOP">
    <form:widget>

      <g:HTMLPanel>
      <!--
        Here, I can now place plain old HTML :) 
        Let's place the 2 components via 2 divs and a float:left.
      -->
        <div style="float:left">
          <form:ComboBox ui:field="type" width="300" allowBlank="true" forceSelection="true" triggerAction="ALL" />
        </div>
        <div>
          <g:Image resource="{loadingGif}" ui:field="Monimage" />                                          
        </div>
      </g:HTMLPanel>

    </form:widget>
  </form:FieldLabel>
</container:VerticalLayoutContainer>

如果您不想使用HTML面板,可以将这两个元素放在<form:widget>标记中。

但要实现这一点,您需要将它们包装在一个组件中(例如,HorizontalPanel),因为您只能在<form:widget>下放置一个小部件。

<form:FieldLabel text="{constants.typ}" labelAlign="TOP">
    <form:widget>
        <g:HorizontalPanel>
          <g:ComboBox ui:field="type" width="300" allowBlank="true" forceSelection="true" triggerAction="ALL" />
          <g:Image resource="{loadingGif}" ui:field="Monimage" />
        </g:HorizontalPanel>
    </form:widget>
</form:FieldLabel>