GWTのSuggestBoxの動作を変更したいと思います。私はENTERを押して値を送信します。ただし、SuggestBoxにはKeyHandlerがあり、Enterキーをキャッチして新しいSelectionを設定します。このHandlerを削除/上書きするソリューションを探しています。このメソッドは GWTウィジェットでデフォルトのハンドラをオーバーライド/削除する方法は?
private void addEventsToTextBox() {
class TextBoxEvents extends HandlesAllKeyEvents implements
ValueChangeHandler<String> {
public void onKeyDown(KeyDownEvent event) {
switch (event.getNativeKeyCode()) {
case KeyCodes.KEY_DOWN:
display.moveSelectionDown();
break;
case KeyCodes.KEY_UP:
display.moveSelectionUp();
break;
case KeyCodes.KEY_ENTER:
case KeyCodes.KEY_TAB:
Suggestion suggestion = display.getCurrentSelection();
if (suggestion == null) {
display.hideSuggestions();
} else {
setNewSelection(suggestion);
}
break;
}
delegateEvent(SuggestBox.this, event);
}
public void onKeyPress(KeyPressEvent event) {
delegateEvent(SuggestBox.this, event);
}
public void onKeyUp(KeyUpEvent event) {
// After every user key input, refresh the popup's suggestions.
refreshSuggestions();
delegateEvent(SuggestBox.this, event);
}
public void onValueChange(ValueChangeEvent<String> event) {
delegateEvent(SuggestBox.this, event);
}
}
TextBoxEvents events = new TextBoxEvents();
events.addKeyHandlersTo(box);
box.addValueChangeHandler(events);
}
SuggestBox
にコンストラクタによって呼び出されはそれがHandlerRegistrationを使用してボックスから、このハンドラを削除することは可能ですか?クラスを拡張しプライベートメソッドをオーバーライドすることで素晴らしいソリューションがありますか?