在GWT中有没有办法为整个视图而不是单个输入元素创建KeyPressEvent?

jac*_*ews 5 java gwt uibinder

现在我有以下代码工作:

@UiHandler("usernameTextBox")
void onUsernameTextBoxKeyPress(KeyPressEvent event) {
    keyPress(event);
}

@UiHandler("passwordTextBox")
void onPasswordTextBoxKeyPress(KeyPressEvent event) {
    keyPress(event);
}

void keyPress(KeyPressEvent event) {
    if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
        submit();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够为视图中的所有元素只有一个侦听器,而不会为每个文本框复制事件.

最终目标是,如果他们按下回车键,无论他们在页面上的哪个位置,都应该提交表单.

谢谢!

Hil*_*amp 7

什么有效,但仍然需要您为每个小部件指定它,但不需要重复的代码:

@UiHandler({"usernameTextBox", "passwordTextBox"})
void onPasswordTextBoxKeyPress(KeyPressEvent event) {
    keyPress(event);
}
Run Code Online (Sandbox Code Playgroud)


jac*_*ews 1

我发现 g:FocusPanel 允许我捕获面板内所有内容的事件。

@UiHandler("focusPanel")
void onFocusPanelKeyPress(KeyPressEvent event) {
    if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
        submit();
    }
}
Run Code Online (Sandbox Code Playgroud)