2013-08-22 5 views
0

У меня есть loading.gif изображение, которое мне нужно выровнять с помощью выпадающего спискаGXT Выравнивание изображения с комбобоксом

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

На моем взгляде, у меня есть ListStore для моей DATAS. Я попытался поместить свое изображение внутри <form:widget>, но он запустил исключение, в котором говорится, что у меня может быть только один элемент на ui: child.

С помощью этого кода мое изображение находится под вывеской, и мне нужно, чтобы она была на правой стороне. Может ли кто-нибудь мне помочь?

ответ

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 Panel, вы можете поместить оба элемента в <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> 
+0

Все, что вы написали, отлично работает. Я попробовал оба, и я предпочитаю панель HTML, потому что я могу иметь больше контроля над своими элементами. –