在GWT中构建SuggestBox之后添加/修改SuggestOracle

7
我能找到的所有关于SuggestBox和MultiWordSuggestOracle的信息都表明,在构建SuggestBox时设置oracle的唯一方式是使用构造函数。但我认为这并不合理,因为有一个默认构造函数不接受oracle参数,并为您创建一个看似为空的实例。这没有太大用处。我需要的是像setSuggestOracle(MultiWordSuggestOracle)addToSuggestOracle(String)这样的方法,但是我在文档中找不到任何关于如何实现这些方法的信息。
1个回答

9

在创建SuggestBox后,似乎无法更改SuggestOracle的实例,但是您可以使用SuggetBox::getSuggestOracle()访问它。 从那里,您必须将其强制转换为实现类以对其进行更改;SuggestOracle基类本身不提供任何内容。 因此,类似于以下内容:

SuggestOracle oracle = new MultiWordSuggestOracle();
SuggestBox box = new SuggestBox(oracle);

try {
  MultiWordSuggestOracle multiWordOracle = (MultiWordSuggestOracle)box.getOracle();
  multiWordOracle.add("This awesome suggestion.");
} catch (ClassCastException e ) {
  // the oracle was not what you thought it was
}

优美的解决方案。谢谢! - Display name
为什么不直接使用 Oracle 变量而不是从建议中获取它呢? - Guillaume
@Guillaume 是的,你可以这样做。但是,我试图展示如何从建议框中获取Oracle。 - Dusty Campbell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接