我正在使用GWT中的建议框,但我遇到了一个问题,其中suggestionBox.showSuggestionList()没有通过focusHandler显示任何结果。
我已经创建了一个建议oracle和suggestBox如下
MultiWordSuggestOracle mySuggestionOracle=new MultiWordSuggestOracle();
SuggestBox mySuggestBox=new SuggestBox(mySuggestionOracle);
然后,当我得到suggestionList值,即某个地方的建议数组时,我将这些值添加到建议oracle中
for(String str : suggestionList){
mySuggestionOracle.add(str);
}
上面的代码是在视图中编写的,我将FocusFandler添加到演示者的这个suggestBox中,
view.mySuggestBox().getValueBox().addFocusHandler(new FocusHandler() {
@Override
public void onFocus(FocusEvent event) {
view.mySuggestBox().setText(" ");
view.mySuggestBox().showSuggestionList();
}
});
可能会出现什么问题,如果我们点击suggestBox,这个showSuggestionList()为什么不显示任何建议。但是如果我们在suggestBox中输入一些文本,那么它会显示特定于输入的正确建议。即如果我们输入它,则显示所有建议都以*。
开头如果我在某个地方出错,可以有人提供帮助吗?
答案 0 :(得分:1)
首先,为了显示默认建议,您必须在 SuggestBox 中将空白字符串设置为文本才能调用showSuggestionList方法(我假设suggestionList中没有字符串从白色空格开始)。
public void onFocus(FocusEvent event) {
view.mySuggestBox().setText("");
view.mySuggestBox().showSuggestionList();
}
秒,要显示所有建议,您必须使用 MultiWordSuggestOracle 对象的 setDefaultSuggestionsFromText 方法进行设置。
常量示例
final static String[] SUGGESTIONS = {"alfred", "alicia", "bernard", "bruno", "bernadette"};
final static List<String> suggestionList = new ArrayList<String>(Arrays.asList(SUGGESTIONS));
您的初始化代码:
for (String str : suggestionList) {
mySuggestionOracle.add(str);
}
mySuggestionOracle.setDefaultSuggestionsFromText(suggestionList);
mySuggestBox = new SuggestBox(mySuggestionOracle);
mySuggestBox.setLimit(suggestionList.size());