【问题标题】:GWT uibinder compositeGWT uibinder 复合材料
【发布时间】:2010-05-17 15:23:11
【问题描述】:

我正在创建一个带有标签和文本框的复合 uibinder 小部件。

预期用途是:

<x:XTextBox ui:field="fieldName" label="a caption" >
    The text to be put in the box.
</x:XTextBox>

我已经找到了如何使用自定义@UiConstructor 构造函数捕获标签,我可能会向构造函数添加另一个参数,但我想知道如何从 xml 中获取文本,就像 GWT 标记 @ 987654323@ 可以。

非常感谢任何帮助。

【问题讨论】:

    标签: gwt composite uibinder


    【解决方案1】:

    通过查看 Label 小部件源代码,我找到了一种可能的实现方式。

    关键是复合小部件必须实现 HasText 接口。所以在声明和正文中:

    public class XTextBox extends Composite implements HasText ...
    ...
    @UiField TextBox textBox;
    ...
    public void setText(String text) {
        textBox.setText(text);
    }
    public String getText() {
        return textBox.getText();
    }
    ...
    

    【讨论】:

      【解决方案2】:

      只需将文本放入小部件的另一个参数中,然后让您的 @UiConstructor 获取该参数。那就是:

      <x:XTextBox ui:field="fieldName" label="a caption" 
        text="The text to be put in the box." />
      

      那么你的 XTextBox.java 就会有这个:

      @UiField TextBox textBox;
      
      @UiConstructor XTextBox(String label, String text) {
        initWidget(uiBinder.createAndBindUi(this));
        textBox.setValue(text);
      }
      

      【讨论】:

        【解决方案3】:

        韩是对的; HasText 是您需要实现的。我发现方便的一件事是如果您知道 Google 小部件也可以执行您想做的事情,请浏览源代码。例如

        http://www.google.com/codesearch/p?hl=en#A1edwVHBClQ/user/src/com/google/gwt/user/client/ui/Label.java

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-01
          • 2011-10-04
          • 2013-07-02
          • 2016-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多