2013-07-24 33 views
2

的自定義小部件使用typeahead我試圖將typeahead小部件連接到NavSearch。我想這樣做:如何使用類似NavSearch

<b:Typeahead ui:field="typeahead"> 
    <b:NavSearch ui:field="navSearch"></b:NavSearch> 
</b:Typeahead> 

然後調用typeahead.setWidget(navsearch.getTextBox())但它拋出錯誤「應事先鍵入的內容設置爲TextBoxBase孩子的」。我知道這是編譯時導致的,我打電話給ui_binder.createAndBindUi(this)

我已經能夠通過切換navsearch搜索TextBox來解決這個問題,然後我適當地設計風格,但我希望能有一個更優雅的解決方案。

回答

1

Typeahead的setWidget專門檢查TextBoxBase類型的窗口小部件,所以我猜這裏沒有別的選擇!悲傷而現實!

public void setWidget(Widget w) { 

    if (!(w instanceof TextBoxBase || w instanceof com.google.gwt.user.client.ui.TextBoxBase)) { 
     throw new IllegalArgumentException("Typeahead should be set TextBoxBase childs"); 
    } 

    super.setWidget(w); 
} 
+0

是的,我得出了同樣的結論。也許在3.0版本中... – user2573153