GWT中的简单复合类和uibinder有什么区别?

时间:2016-03-17 05:26:09

标签: java gwt uibinder composite

我想在GWT中创建一个小部件。有两种方法存在。

1.GWT UI:BINDER

 public class Login extends Composite {

  private static LoginUiBinder uiBinder = GWT.create(LoginUiBinder.class);

  /*
   * @UiTemplate is not mandatory but allows multiple XML templates
   * to be used for the same widget. 
   * Default file loaded will be <class-name>.ui.xml
    */
   @UiTemplate("Login.ui.xml")
   interface LoginUiBinder extends UiBinder<Widget, Login> {
   }
   ...
 }

和XML文件是

 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
  xmlns:gwt='urn:import:com.google.gwt.user.client.ui' 
  xmlns:res='urn:with:com.tutorialspoint.client.LoginResources'>
  <ui:with type="com.tutorialspoint.client.LoginResources" field="res">
  </ui:with>
  <gwt:HTMLPanel>

   </gwt:HTMLPanel>
 </ui:UiBinder> 

2使用Composit

 public class HelloWorld implements EntryPoint {

   /**
    * A composite of a TextBox and a CheckBox that optionally enables it.
    */
private static class OptionalTextBox extends Composite  {


  public OptionalTextBox(String caption) {

     VerticalPanel decoratorPanel = new VerticalPanel();

     initWidget(decoratorPanel);
  }

 }

所以我很困惑哪种方法很好用。有什么不同吗我使用了两种方法,但没有任何想法。

1 个答案:

答案 0 :(得分:2)

您正在显示相同的方法。在两个示例中,新的小部件都扩展了Composite。编译后的代码没有任何有意义的区别。

唯一的区别是一个例子使用UiBinder,而另一个例子没有。

就个人而言,我更喜欢使用UiBinder,除非我创建一个非常简单的小部件,没有样式和文本字符串(我的应用程序是国际化的)。根据我的经验,UiBinder模板更易于维护和故障排除。