GWT uibinder复合材料

时间:2010-05-17 15:23:11

标签: gwt composite uibinder

我正在创建一个带有Label和TextBox的复合uibinder小部件。

意图用途是:

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

我已经找到了如何使用自定义@UiConstructor构造函数捕获标签,我可能会在构造函数中添加另一个参数,但我想知道如何从xml获取文本,就像GWT一样标记<g:Label>a caption</g:Label>

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

我通过查看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();
}
...

答案 1 :(得分:0)

只需将文本放入窗口小部件的另一个参数中,然后让@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);
}

答案 2 :(得分:0)

汉是对的; HasText是您需要实现的。我发现的一件事就是浏览源代码,如果您知道Google小部件也做了您想要做的事情。 e.g。

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