GWT SuggestBox:如何强制SuggestBox选择建议列表中的第一项?

el_*_*ako 1 java gwt

我有一个文本框和一个建议框.我在文本框中附加了一个值更改和键加载处理程序,这样无论用户在文本框中输入(或粘贴)的内容都在建议框内回显.我可以通过在每个值更改和键入事件上调用showSuggestionList来获取建议框以显示建议列表.

现在,如何让suggestbox自动选择建议列表中的第一项?

我尝试的方法之一是以编程方式模拟按键,即

suggestBox.setFocus(true);
NativeEvent enterEvent = Document.get().createKeyPressEvent(false, false, false,   false, KeyCodes.KEY_ENTER);
DomEvent.fireNativeEvent(enterEvent, suggestBox);
textBox.setFocus(true);
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.不模拟回车键.另一个可能的解决方案是扩展SuggestionBox.SuggestionDisplay,但我不太清楚如何做到这一点.任何指针赞赏.

更新:我还在研究这个并尝试各种方法.

在这里,我尝试通过继承DefaultSuggestionDisplay并覆盖getCurrentSelection()来实现我自己的SuggestionDisplay,以便从我的类中访问.这也不起作用.Null返回.

    private class CustomSuggestionDisplay extends DefaultSuggestionDisplay {
    @Override
    protected Suggestion getCurrentSelection() {
        return super.getCurrentSelection();
    }
}

    suggestBox.setAutoSelectEnabled(true);

    textBox.addKeyUpHandler(new KeyUpHandler() {

        public void onKeyUp(KeyUpEvent event) {
            suggestBox.setValue(textBox.getText(), true);
            suggestBox.showSuggestionList();
            if (suggestBox.isSuggestionListShowing()) {
                String s = ((CustomSuggestionDisplay) suggestBox.getSuggestionDisplay()).getCurrentSelection().getDisplayString();
                Window.alert(s);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我尝试将值更改处理程序附加到SuggestBox,并将事件类型转换为SuggestOracle.Suggestion.同样,返回null.

suggestBox.addValueChangeHandler(new ValueChangeHandler<String>() {

        public void onValueChange(ValueChangeEvent<String> event) {
            String s = ((SuggestOracle.Suggestion) event).getDisplayString();
            Window.alert(s);
        }
    });
Run Code Online (Sandbox Code Playgroud)

tim*_*m_a 5

使用 suggesBox.setAutoSelectEnabled(true)

这里有关于GWT的SuggestBox的更多信息: