2010-05-17 189 views
3

我正在用Label和TextBox創建一個複合uibinder小部件。GWT uibinder複合

的intented使用方法是:

<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

只需將文本放入您的小部件的另一個參數中,並讓您的@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接口。所以在聲明和正文中:

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