2014-10-17 50 views
1

我想創建一個自定義小部件,允許在UiBinder中指定其嵌套的子元素。就像DockPanel可以有southnorth等。我看了DockPanel的源代碼,但還沒找到解決辦法。創建自定義小部件並允許UiBinder中的嵌套子元素

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

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

更新:我可以有我的自定義<left><right>下多個子節點?如果我添加多個小部件,代碼不會編譯。

回答

2

第一件事 - <left><right>必須與LeftRightToolbar位於同一命名空間,所以它應該是<my:left><my:right>

其次,你需要註釋兩種方法LeftRightToolbar@UiChild註釋:

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

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

方法addToLeft將被要求加入<my:left>標籤中指定的部件。 <my:right>標籤由addToRight處理。

如果您需要將多個小部件添加到自定義標籤中,則應在其中放置一個容器,如FlowPanel

+0

謝謝!如果我不想擁有'my:left'和'my:right'子元素並直接在''下面添加小部件,可能嗎? – damluar 2014-10-17 13:29:18

+0

第二個問題:如果我有一個方法'@UiChild(tagname =「data」) public void addData(String key,String value){'。我能否以某種方式傳遞UiBinder的密鑰和價值? – damluar 2014-10-17 13:43:47

+0

您無法將鍵和屬性添加到您的自定義標籤。但是你可以在'LeftRightToolbar'元素上添加需要的標籤。你可以傳遞參數給你的構件的構造函數(使用@UiConstructor或[其他方法](http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html#Using_a_widget))。 – 2014-10-17 14:17:06

相關問題