Мне часто приходится регистрировать обработчик для вводов, поэтому я часто использую следующий абстрактный класс:
public abstract class EnterKeyHandler implements KeyDownHandler {
public void onKeyDown(KeyDownEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
enterKeyDown(event);
}
public abstract void enterKeyDown(KeyDownEvent event);
}
А затем я реализую это следующим образом, зарегистрировав его со всеми соответствующими виджетами:
EnterKeyHandler doStuffHandler = new EnterKeyHandler() {
public void enterKeyDown(KeyDownEvent event) {
doStuff(); }
};
someTextBox.addKeyDownHandler(doStuffHandler );
anotherTextBox.addKeyDownHandler(doStuffHandler );
yetAnotherTextBox.addKeyDownHandler(doStuffHandler );
Это избавляет вас от необходимости отфильтровывать любые нажатия клавиш, не являющиеся клавишей ввода.