2013-07-24 26 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