2

私は GWT で提案ボックスを使用していますが、suggestionBox.showSuggestionList() が focusHandler を介して結果を表示しないという問題に固執しています。

次のように提案オラクルとsuggestBoxを作成しました

MultiWordSuggestOracle mySuggestionOracle=new MultiWordSuggestOracle();
SuggestBox mySuggestBox=new SuggestBox(mySuggestionOracle);

その後、suggestionList 値、つまりどこかからの提案の配列を取得した後、それらの値を提案オラクルのように追加します

for(String str : suggestionList){
    mySuggestionOracle.add(str);
}

上記のコードはビューに記述されており、プレゼンターのこのSuggestBoxにFocusFandlerを次のように追加します。

view.mySuggestBox().getValueBox().addFocusHandler(new FocusHandler() {
        @Override
        public void onFocus(FocusEvent event) {
            view.mySuggestBox().setText(" ");
            view.mySuggestBox().showSuggestionList();
        }
    });

何が問題なのか、なぜこの showSuggestionList() は、suggestBox をクリックしても提案を表示しないのですか? しかし、suggestBox にテキストを入力すると、入力に固有の適切な提案が表示されます。つまり、a と入力すると、すべての候補が a* で始まることが示されます。

私がどこかで間違っている場合、同じシナリオまたはアイデアがあれば、誰かが助けてくれますか?

4

1 に答える 1

2

まず、デフォルトの提案を表示するには、showSuggestionList メソッドを呼び出す前に、SuggestBoxに空の文字列をテキストとして設定する必要があります(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());
于 2016-03-16T09:04:29.673 に答える