Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaGWT中拦截KeyPressEvent?_Java_Gwt_Keylistener - Fatal编程技术网

如何在JavaGWT中拦截KeyPressEvent?

如何在JavaGWT中拦截KeyPressEvent?,java,gwt,keylistener,Java,Gwt,Keylistener,我是Java新手,在我们的代码中使用的是GWT 我们正在使用KeyPressEvent处理Key\u Enter请求。但对于每个enter请求,似乎都会从KeyPressEvent触发两个事件。但我希望只触发一个事件,因为我只输入了一次 下面是我的代码。请检查并让我知道,我们需要纠正的任何事情 void onEnter(KeyPressEvent event) { if(event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENT

我是Java新手,在我们的代码中使用的是GWT

我们正在使用
KeyPressEvent
处理
Key\u Enter
请求。但对于每个enter请求,似乎都会从
KeyPressEvent
触发两个事件。但我希望只触发一个事件,因为我只输入了一次

下面是我的代码。请检查并让我知道,我们需要纠正的任何事情

void onEnter(KeyPressEvent event)
{
        if(event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER)
        {
           //(seems to times this code is called)
           //Domy stuff
        }
}
如果我使用
event.getCharCode()
而不是
event.getNativeEvent().getKeyCode()
,它只返回0

你知道怎么修理吗

谢谢,

警告说GWT没有完全规范键盘处理中的浏览器特性。以下是文件中的报价:

本机键盘事件有些混乱(http://www.quirksmode.org/js/keys.html),我们在这里进行了一些琐碎的规范化,但没有尝试任何复杂的修补,因此用户应该受到警告

这意味着浏览器触发不同键盘事件的方式不一致,您应该在自己的代码中处理这些怪癖

阅读以了解更多信息。

警告说,GWT没有完全规范键盘处理中的浏览器特性。以下是文件中的报价:

本机键盘事件有些混乱(http://www.quirksmode.org/js/keys.html),我们在这里进行了一些琐碎的规范化,但没有尝试任何复杂的修补,因此用户应该受到警告

这意味着浏览器触发不同键盘事件的方式不一致,您应该在自己的代码中处理这些怪癖


阅读以了解更多信息。

尝试在尝试侦听的小部件上调用sinkEvents。这应该在构建小部件后立即完成


widget.sinkEvents(Event.KEYEVENTS)
尝试在尝试侦听的小部件上调用sinkEvents。这应该在构建小部件后立即完成


widget.sinkEvents(Event.KEYEVENTS)
KeyPressEvent
用于产生实际字符代码的按键操作,如按“a”键。如果要在按下enter键时收到通知,请改用:


KeyPressEvent
用于产生实际字符代码的按键操作,如按下“a”键。如果要在按下enter键时收到通知,请改用:


我更喜欢使用
KeyUpEvent
,因为用户无法将其与
KeyPressEvent
区分开来,所以下面是我的解决方案:

void onKeyUp(KeyUpEvent event) {
  if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
    // Handle key press
  }
}

我更喜欢使用
KeyUpEvent
,因为用户无法将其与
KeyPressEvent
区分开来,所以下面是我的解决方案:

void onKeyUp(KeyUpEvent event) {
  if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
    // Handle key press
  }
}

应移至stackoverflow.com是否可以包括演示如何注册事件处理程序的代码?应移至stackoverflow.com是否可以包括演示如何注册事件处理程序的代码?