【发布时间】:2011-02-18 01:18:04
【问题描述】:
我想更改 GWT 中 SuggestBox 的行为。我想通过按 ENTER 提交值。但是 SuggestBox 有一个 KeyHandler,它可以捕获任何输入键并设置一个新的选择。我正在寻找删除/覆盖此处理程序的解决方案。
该方法由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 从框中删除此 Handler?通过扩展类和覆盖私有方法有什么好的解决方案吗?
【问题讨论】: