Quand vous regardez SuggestBox
constructeurs, vous trouverez this:
public SuggestBox(SuggestOracle oracle,
ValueBoxBase<java.lang.String> box,
SuggestBox.SuggestionDisplay suggestDisplay)
oracle - fournit des suggestions basées sur le contenu actuel du widget texte
boîte
- le widget texte
de suggestDisplay - la classe utilisée pour afficher des suggestions
SuggestionDisplay
est ce que vous devez vérifier si isSuggestionListShowing()
.
code Exemple:
@UiField
FormPanel uiFormPanel;
@UiField
TextBox uiTextBox;
@UiField(provided = true)
SuggestBox uiSuggestBox;
public SubmitTest() {
// provided fields
MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
oracle.add("Cat");
oracle.add("Dog");
oracle.add("Horse");
oracle.add("Canary");
TextBox box = new TextBox();
final DefaultSuggestionDisplay suggestDisplay = new DefaultSuggestionDisplay();
uiSuggestBox = new SuggestBox(oracle, box, suggestDisplay);
initWidget(uiBinder.createAndBindUi(this));
uiFormPanel.addSubmitHandler(new SubmitHandler() {
@Override
public void onSubmit(SubmitEvent event) {
event.cancel();
Window.alert("Submit!");
}
});
uiTextBox.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
uiFormPanel.submit();
}
});
uiSuggestBox.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
if(!suggestDisplay.isSuggestionListShowing())
uiFormPanel.submit();
}
});
}
UiBinder:
<g:FormPanel ui:field="uiFormPanel">
<g:HTMLPanel>
<g:TextBox ui:field="uiTextBox" />
<g:SuggestBox ui:field="uiSuggestBox" />
</g:HTMLPanel>
</g:FormPanel>
A travaillé bien, merci. Juste une chose: isSuggestionListShowing() est obsolète dans l'interface SuggestionDisplay. A dû convertir à l'implémentation par défaut: ((DefaultSuggestionDisplay) entitySuggestBox.getSuggestionDisplay()). IsSuggestionListShowing() – Biologeek