我正在创建一个带有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>
。
非常感谢任何帮助。
答案 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。