【问题标题】:GWT setting the position of a SuggestBoxGWT 设置 SuggestBox 的位置
【发布时间】:2012-07-04 19:02:41
【问题描述】:

我在 GWT 中使用SuggestBox 来创建一个带有不错的建议列表的文本框,如下所示:

public void onModuleLoad() {
    MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();  
    oracle.add("Cat");
    oracle.add("Dog");
    oracle.add("Horse");
    oracle.add("Canary");
    SuggestBox box = new SuggestBox(oracle);
    RootPanel.get().add(box);
    }
}

问题是我希望建议列表出现在文本框的顶部,而不是底部。

有什么办法吗?

如果没有,GWT 中是否有任何替代 SuggestBox 的方法? (我成功地配置了 jQuery 的 autocompletion 小部件以显示在文本框的顶部,但是将其与 GWT 集成似乎既不优雅也不高效......)

谢谢!

【问题讨论】:

    标签: jquery gwt


    【解决方案1】:

    我不认为有任何内置方法可以做到这一点,但我认为可以通过一些工作来完成。 SuggestBox 有一个以SuggestionDisplay 作为参数的构造函数。所以你可以继承DefaultSuggestionDisplay 并覆盖它的showSuggestions() 方法来显示你想要的弹出窗口。

    【讨论】:

    • +1 请注意,计算正确位置所需的大部分代码已经存在:如果 SuggestBox 靠近窗口底部,它会自动显示在顶部。代码在PopupPanel.position()。由于这个方法是私有的,所以它不能被覆盖,但是你可以覆盖PopupPanel.showRelativeTo(final UIObject target),并且只需使用position()的稍微适应的版本。同时覆盖DefaultSuggestionDisplay.createPopup() 以使用您的弹出窗口。
    • 谢谢克里斯!,你说得对,代码已经在那里,我只需要修改它。不幸的是,我无法覆盖PopupPanel.showRelativeTo(final UIObject target),因为它是最终方法。我找不到任何其他合适的选择,有什么想法吗?
    • @Mike:我完全忽略了最后的修饰符。在这种情况下,最好覆盖 DefaultSuggestionDisplay.showSuggestions(),正如 David 已经写的那样。您仍然可以重复使用大部分 PopupPanel.position() 的代码...
    猜你喜欢
    • 2012-03-08
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多