创建自定义窗口小部件并允许UiBinder中的嵌套子元素

时间:2014-10-17 11:15:05

标签: gwt

我想创建一个自定义窗口小部件,允许在UiBinder中指定其嵌套的子元素。就像DockPanel可以有southnorth等一样。我查看了DockPanel的源代码,但尚未找到解决方案。

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

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

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

1 个答案:

答案 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