gwt suggestbox不会隐藏在页面滚动上

时间:2016-09-28 12:14:55

标签: java html gwt suggestbox

我已经创建了一个建议框并生成了包含大量文本的HTML页面,因此我可以滚动。 1.显示建议清单 2.滚动页面

带有建议列表的弹出框随着滚动页面一起移动,但我希望它在页面滚动时不会隐藏,也不会随页面移动。

据我所知,建议弹出窗口具有绝对的位置。但是有一些非css解决方案。

回答:

我已经尝试向Windows添加滚动处理程序,但是当我有two scrolls并且它们的权利移动时,我发现只处理事件,仅在这种情况下。如果我有一个滚动页面来滚动页面,就像大文本一样 - 没有什么可以调用

1 个答案:

答案 0 :(得分:1)

构建SuggestBox时,您可以提供自己的SuggestOracleTextBoxSuggestionDisplayDefaultSuggestionDisplay可用于隐藏建议列表。您可以在Window.scrollHandler

中执行此操作

以下是代码:

MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
oracle.add("one");
oracle.add("two");
oracle.add("three");

TextBox box = new TextBox();
final DefaultSuggestionDisplay display = new DefaultSuggestionDisplay();

SuggestBox suggestBox = new SuggestBox(oracle, box, display);

Window.addWindowScrollHandler(new ScrollHandler() {
    @Override
    public void onWindowScroll(ScrollEvent event) {
        display.hideSuggestions();
    }
});

请注意,您需要使用DefaultSuggestionDisplay - 请参阅已弃用hideSuggestionList 方法的文档。

我希望这个例子解释一切。

我还检查过,如果您不使用自己的SuggestionDisplay,则无论如何都会使用DefaultSuggestionDisplay。所以你可以做得更简单。

((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();

修改

如果没有整个窗口滚动但只有某些面板的内容,您可以在面板中添加ScrollHandler

panel.addDomHandler(new ScrollHandler() {
    @Override
    public void onScroll(ScrollEvent event) {
        ((DefaultSuggestionDisplay) suggestBox.getSuggestionDisplay()).hideSuggestions();
    }
}, ScrollEvent.getType());