在UIBinder中使用子元素配置的gwt自定义小部件(如CustomButton)

zal*_*niy 13 gwt uibinder

我面临着创建自定义小部件的任务,它有容器行为 - 里面有3个面板.我想像一般的UIBinder方式使用它,如CustomButton

 <u:MyWidget>
   <u:image><g:Image .../></u:image>
   <u:mainContent><g:Panel.../></u:mainContent>
 </u:MyWinget>
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式定义自定义子元素,或者它可能是UIBuilder中的预定义事物?

提前致谢

Str*_*lok 16

正确的方法是使用UiChild注释.

public class MyWidget extends Composite {
  public MyWidget() {
    // ...
  }

  @UiChild( tagname = "image" )
  void addImage(Image image) {
    // ...
  } 

  @UiChild( tagname = "mainContent" )
  void addMainContent(Widget contentWidget) {
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 好吧,让它工作.只要我的泛型类型,比如MyAbstractWidget被'customtag'标签的子进行扩展,那么在@UiChild方法中,我可以毫无问题地从Widget向MyAbstractWidget转发.这样,@ UiChild方法和父窗口小部件可以处理'customtag'的任何正确形成的未来子项. (2认同)