我有一个需要与组合框对齐的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。
使用此代码,我的图像位于组合框下,我需要它在它的右侧。 有人能帮助我吗?
答案 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>