当 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>