我想知道如何在用户输入 ENTER 键时开发一个Handler来管理。例如,在登录屏幕上,键入登录名和密码,然后按 ENTER 。是否需要在RootPanel中添加Handler?在一个按钮?我不知道。
提前感谢您的解决方案。
答案 0 :(得分:5)
我经常有机会为enter press注册一个处理程序,所以我经常使用以下抽象类:
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 );
这可以节省您过滤掉任何不是输入键的按键的麻烦。
答案 1 :(得分:1)
在你解释的情况下,处理程序应该被添加到TextBox,因为它是聚焦的,不需要添加到RootPanel或其他东西。因为当用户按下 Enter 时,无论其必要性如何都会触发此事件。