我们可以在带有图像的同一pushbutton中添加clickhandler和keydownhandler吗?我获得了点击



简化的代码

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按钮

中添加了一个keydownhandler
play.addKeyDownHandler(new KeyDownHandler() {
            @Override
            public void onKeyDown(KeyDownEvent event) {
                //This event is never fired
            }
        });

但是上面的onkeydown()方法从未被调用。

仅在我单击屏幕上的其他位置之后,是由本机PreviewHandler捕获的键按事件。

就像其他信息一样,我尝试关注而没有成功

  1. 将domhandler添加到播放按钮而不是keydownhandler

  2. 删除了设置为play按钮的图像

  3. 尝试每次使用play.set.focus(false);

  4. 按下播放按钮。

任何可能的解决方案或建议都将受到赞赏。

播放按钮需要有焦点才能捕获键盘。你能检查一下吗?

如果您无法将重点设置在该按钮上:检查此答案。您需要将钥匙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()));
        }       
    }
});

相关内容

  • 没有找到相关文章

最新更新