java - GWT SuggestBox : How do I force the SuggestBox to select the first item in the suggestion list?

标签 java gwt

我有一个文本框和一个建议框。我将值更改和键入处理程序附加到文本框,这样无论用户键入(或粘贴)到文本框中的内容都会在建议框中回显。我可以通过在每次值更改和键入事件时调用 showSuggestionList 来让建议框显示建议列表。

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

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

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

这根本行不通。未模拟回车键。另一种可能的解决方案是扩展 SuggestionBox.SuggestionDisplay,但我不太确定该怎么做。任何指点表示赞赏。

更新:我仍在努力解决这个问题并尝试各种方法。

在这里,我尝试通过子类化 DefaultSuggestionDisplay 并覆盖 getCurrentSelection() 来实现我自己的 SuggestionDisplay,以便从我的类(class)访问。这也不管用。返回 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);
            }
        }
    });

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

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

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

最佳答案

使用suggesBox.setAutoSelectEnabled(true)

Here有关 GWT SuggestBox 的更多信息:

关于java - GWT SuggestBox : How do I force the SuggestBox to select the first item in the suggestion list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776615/

相关文章:

java - GWT Eclipse 插件安装

css - 在另一个面板上显示一个小部件

java - 使用Spring在工厂中获取具有相同接口(interface)的注入(inject)bean的最佳方法是什么?

css - 无法在 GWT 的全屏 ScrollView 内的面板中获取正确的背景图像

Java:如何在池中维护 SSLSocket session 以防止对每条消息进行新的握手

java - JLabel 扩展但不换行

gwt - Java 独立应用程序的 GUI。我应该使用 SWT 还是 GWT?

css - 如何从标题面板小部件中删除默认的 GET 样式?

c# - 如果 catch 和 finally block 都抛出异常会发生什么?

java - 如何从集合中获取最大值(例如 ArrayList)?