我有一个文本框和一个suggestbox。我在文本框中附加了一个值更改和键处理程序,这样用户键入(或粘贴)到文本框中的任何内容都会在提示框中回显。我可以通过调用showSuggestionList对每个值更改和键入事件来获取提示框以显示建议列表。GWT SuggestBox:如何强制SuggestBox选择的建议列表中的第一项?
现在,我怎么了suggestbox自动选择的建议列表中的第一项?
一个我试过的方法就是以编程方式模拟按键,即
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。这也不起作用。返回空值。
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);
}
});
setAutoSelectEnabled默认为true。它的作用是当用户在提示框中键入并按下回车键时,第一项被选中。如果设置为false,则按Enter键时不会发生任何事情。 – 2011-04-25 09:28:56