我想改變GWT中SuggestBox的行爲。我想按ENTER鍵提交值。然而,SuggestBox有一個KeyHandler,它捕獲任何回車鍵並設置一個新的選擇。我正在尋找解決方案來刪除/重寫此處理程序。如何覆蓋/刪除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刪除從盒子這個處理程序?有沒有什麼好的解決方案,通過擴展類和重寫私有方法?