简化的代码
play = new PushButton("Play");
play.getUpFace().setImage(new Image(pathToImages+offImage));
play.getUpHoveringFace().setImage(new Image(pathToImages+hoverImage));
play.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
//This event is captured
}
});
我需要一个键盘按钮作为快捷方式播放按钮,我添加了
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event)
{ //Call the functionality of play button for the approriate key press
}
});
但是,一旦我使用鼠标单击"播放"按钮,上面的本机PreviewHandler不会从键盘捕获键按事件。
所以我在play按钮
中添加了一个keydownhandlerplay.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
//This event is never fired
}
});
但是上面的onkeydown()方法从未被调用。
仅在我单击屏幕上的其他位置之后,是由本机PreviewHandler捕获的键按事件。
就像其他信息一样,我尝试关注而没有成功
将domhandler添加到播放按钮而不是keydownhandler
删除了设置为play按钮的图像
尝试每次使用play.set.focus(false);
按下播放按钮。
任何可能的解决方案或建议都将受到赞赏。
播放按钮需要有焦点才能捕获键盘。你能检查一下吗?
如果您无法将重点设置在该按钮上:检查此答案。您需要将钥匙downhandler设置为容器,并确保其一直集中在捕获事件的情况下,即使您的按钮不专注。
这将有效:
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getNativeEvent().getType().equals("keydown")) {
Window.alert("Code: " + Integer.toString(event.getNativeEvent().getKeyCode()));
}
}
});