我想创建一个自定义窗口小部件,允许在UiBinder中指定其嵌套的子元素。就像DockPanel
可以有south
,north
等一样。我查看了DockPanel
的源代码,但尚未找到解决方案。
<my:LeftRightToolbar>
<left>
<g:Button/>
</left>
<right>
<g:Button/>
</right>
</my:LeftRightToolbar>
更新:我可以在自定义<left>
和<right>
下拥有多个子节点吗?如果我添加多个小部件,代码就不会编译。
答案 0 :(得分:2)
首先,<left>
和<right>
必须与LeftRightToolbar
位于同一名称空间中,因此它应为<my:left>
和<my:right>
。
其次,您需要使用@UiChild
注释在LeftRightToolbar
中注释两个方法:
@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
。