GWT에서 SuggestBox의 동작을 변경하고 싶습니다. ENTER 키를 눌러 값을 제출하고 싶습니다. 그러나 SuggestBox에는 KeyHandler가 있습니다. KeyHandler는 Enter 키를 잡아서 새 Selection을 설정합니다. 이 핸들러를 제거/초과하는 솔루션을 찾고 있습니다.GWT 위젯에서 기본 처리기를 재정의/제거하는 방법은 무엇입니까?
이 방법은 SuggestBox에서 생성자에 의해 불려
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);
}
그것은 HandlerRegistration를 사용하여 상자에서이 핸들러를 제거 할 수 있습니까? 클래스를 확장하고 private 메소드를 재정 의하여 좋은 해결책이 있습니까?