2014-04-14 34 views
1

有什么用UiBinder的CORPERATION使用flextable的最佳方式,我已经知道我必须提供并启动它befor initWidgetFlexTable用UiBinder的或替代

@UiField(provided = true) FlexTable contentTable; 

但我只需要一个表作为输入矩阵,如:

pseudo: 

Label."Name: " TextBox() 
Label."Password: " TextBox() 

知道的是它甚至考虑FlexTable一个好主意,或者有更好的吴国良? 感谢您的帮助。

+1

通过你不必“提供,并initWidget之前启动它”的方式......这是只为需要的是你不能提供使用UiBinder的模板构造ARGS(至少在一个干净的自定义部件的情况下方式) –

回答

3

我会通过的事实,使用表格的形式布局是不是你最好的选择,也不是一个很好的做法。

你可以用与UiBinder的一个HTMLPanel,并尽一切HTML就像你会与一个“正常”的网页,有一些额外的GWT标签控件:

<g:HTMLPanel> 
    <div class="formInput"> 
     <g:Label text="First Name - W3C style : "> 
     <g:TextBox ui:field="firstNameTextBox"> 
    </div> 


    <table> 
    <tbody> 
     <tr> 
      <td>Last name - table style :</td> 
      <td><g:TextBox ui:field="lastNameTextBox" /></td> 
     </tr> 
     <tr> 
      <!-- Other form fields --> 
     </tr> 
    </tbody> 
    </table> 
</g:HTMLPanel> 
+0

谢谢。我已经这样做了。不知道这是否是最好的方法,所以我问这个问题:)感谢您的快速回答。 – vicR

0

如果你只想要一个表显示一个输入表单我会考虑使用一个纯HTML小部件,并将其作为混合GWT小部件。

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
     xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
<ui:style> 

</ui:style> 
<g:HTMLPanel> 
    <table> 
     <tr> 
      <td>Name:</td> 
      <td> 
       <g:TextBox ui:field="name"/> 
      </td> 
     </tr> 
     <tr> 
      <td>Password</td> 
      <td> 
       <g:PasswordTextBox ui:field="password"/> 
      </td> 
     </tr> 
    </table> 
    </g:HTMLPanel> 
</ui:UiBinder> 

不想FlexTable用于显示数据或可编辑数据。因为显示这些类型的信息真的很快。从我看到的,过度使用小部件会减慢应用程序的速度。