有没有办法在GWT中捕获键盘事件?

时间:2011-10-04 11:22:52

标签: gwt

我正试图在GWT中捕获关键点,我尝试了addKeyDownHandler和onBrowserEvent。问题是只要适当的小部件具有焦点,它们就可以工作,但是当其他东西具有焦点时它会停止工作。我可以将代码添加到每个小部件中,但这看起来很疯狂。我也尝试强制一个小部件始终具有焦点,但这会导致TextBoxes之类的其他问题(需要重点打字)。

在GWT中按下某个键时,是否只有一种简单的高级方法可以触发某些代码,而不管哪个小部件具有焦点?

2 个答案:

答案 0 :(得分:7)

您可以使用Event.addNativePreviewHandlerKeyDownHandler附加到RootPanel.get()的{​​{1}}(使用addDomHandlerRootPanel.get().addDomHandler(myHandler, KeyDownEvent.getType())),具体取决于您是否想要在 capture bubble 阶段收听( capture 阶段在IE中模拟)。

答案 1 :(得分:0)

为什么不将keyDownHandler像这样添加到body元素中并将处理程序添加到该元素中?除非您在function()中阻止它,否则所有javascript事件都会消失。

示例:

RootPanel.getBodyElement()

然后将其包装成一个类,使其成为Widget和addDomHandler,如描述here。或者,如果这证明不是非常简单,那么只需在托管页面中写为javascript,或使用本机方法(GWT允许您使用本机关键字编写javascript)。