0

我有一个 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 只能有一个元素。

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

4

1 回答 1

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>标签中。

但要实现这一点,您需要将它们包装在一个组件中(例如,一个Horizo​​ntalPanel),因为您只能将一个小部件放在<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>
于 2013-08-22T14:56:22.850 回答