我正试图在GWT中捕获关键点,我尝试了addKeyDownHandler和onBrowserEvent。问题是只要适当的小部件具有焦点,它们就可以工作,但是当其他东西具有焦点时它会停止工作。我可以将代码添加到每个小部件中,但这看起来很疯狂。我也尝试强制一个小部件始终具有焦点,但这会导致TextBoxes之类的其他问题(需要重点打字)。
在GWT中按下某个键时,是否只有一种简单的高级方法可以触发某些代码,而不管哪个小部件具有焦点?
答案 0 :(得分:7)
您可以使用Event.addNativePreviewHandler
或KeyDownHandler
附加到RootPanel.get()
的{{1}}(使用addDomHandler
:RootPanel.get().addDomHandler(myHandler, KeyDownEvent.getType())
),具体取决于您是否想要在 capture 或 bubble 阶段收听( capture 阶段在IE中模拟)。
答案 1 :(得分:0)
为什么不将keyDownHandler像这样添加到body元素中并将处理程序添加到该元素中?除非您在function()
中阻止它,否则所有javascript事件都会消失。
示例:
RootPanel.getBodyElement()
然后将其包装成一个类,使其成为Widget和addDomHandler,如描述here。或者,如果这证明不是非常简单,那么只需在托管页面中写为javascript,或使用本机方法(GWT允许您使用本机关键字编写javascript)。