2014-10-17 51 views
1

我想创建一个自定义小部件,允许在UiBinder中指定其嵌套的子元素。就像DockPanel可以有southnorth等。我看了DockPanel的源代码,但还没找到解决办法。创建自定义小部件并允许UiBinder中的嵌套子元素

<my:LeftRightToolbar> 
    <left> 
     <g:Button/> 
    </left> 

    <right> 
     <g:Button/> 
    </right>   
</my:LeftRightToolbar> 

更新:我可以有我的自定义<left><right>下多个子节点?如果我添加多个小部件,代码不会编译。

回答

2

第一件事 - <left><right>必须与LeftRightToolbar位于同一命名空间,所以它应该是<my:left><my:right>

其次,你需要注释两种方法LeftRightToolbar@UiChild注释:

@UiChild(tagname = "left") 
void addToLeft(Widget widget) { 
    left.add(widget); 
} 

@UiChild(tagname = "right") 
void addToRight(Widget widget) { 
    right.add(widget); 
} 

方法addToLeft将被要求加入<my:left>标签中指定的部件。 <my:right>标签由addToRight处理。

如果您需要将多个小部件添加到自定义标签中,则应在其中放置一个容器,如FlowPanel

+0

谢谢!如果我不想拥有'my:left'和'my:right'子元素并直接在''下面添加小部件,可能吗? – damluar 2014-10-17 13:29:18

+0

第二个问题:如果我有一个方法'@UiChild(tagname =“data”) public void addData(String key,String value){'。我能否以某种方式传递UiBinder的密钥和价值? – damluar 2014-10-17 13:43:47

+0

您无法将键和属性添加到您的自定义标签。但是你可以在'LeftRightToolbar'元素上添加需要的标签。你可以传递参数给你的构件的构造函数(使用@UiConstructor或[其他方法](http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html#Using_a_widget))。 – 2014-10-17 14:17:06

相关问题