【问题标题】:Create custom widget and allow nested sub-elements in UiBinder在 UiBinder 中创建自定义小部件并允许嵌套子元素
【发布时间】:2014-10-17 11:15:05
【问题描述】:

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

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

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

更新:我的自定义&lt;left&gt;&lt;right&gt; 下可以有多个子节点吗?如果我添加多个小部件,代码将无法编译。

【问题讨论】:

    标签: gwt


    【解决方案1】:

    第一件事 - &lt;left&gt;&lt;right&gt; 必须与 LeftRightToolbar 在同一个命名空间中,所以它应该是 &lt;my:left&gt;&lt;my:right&gt;

    其次,你需要用@UiChild注解LeftRightToolbar中的两个方法:

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

    将调用addToLeft 方法添加&lt;my:left&gt; 标签中指定的小部件。 &lt;my:right&gt; 标签由 addToRight 处理。

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

    【讨论】:

    • 谢谢!如果我不想拥有my:leftmy:right 孩子并直接在&lt;my:LeftRightToolbar&gt; 下添加小部件。有可能吗?
    • 还有第二个问题:如果我有一个方法@UiChild(tagname="data") public void addData(String key, String value) {。我可以以某种方式从 UiBinder 传递键和值吗?
    • 您不能向自定义标签添加键和属性。但是您可以在 LeftRightToolbar 元素上添加所需的标签。您可以将参数传递给小部件的构造函数(使用@UiConstructor 或other methods)。
    • 谢谢!那么我的第一个问题呢?
    • 您可以将小部件直接放入您的LeftRightToolbar - 它必须实现HasWidgets 接口。请参阅stackoverflow.com/q/4175216/181497
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多