-1

我正在努力在面板上实现键绑定,以侦听是否按下箭头键。

如果他们被按下,他们会做一个动作。我的代码:

private void createKeyBindings(){
        actionMap = this.getActionMap();
        inputMap = this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        this.getInputMap().put(KeyStroke.getKeyStroke("a"),
                "pressedUpArrow");
        this.getInputMap().put(KeyStroke.getKeyStroke("released UP"),
                "releasedUpArrow");
        this.getActionMap().put("pressedUpArrow",
                 new PressedUpArrowAction());
        this.getActionMap().put("releasedUpArrow",
                new ReleasedUpArrowAction());
    }

这些动作起作用(当我将它们映射到一个按钮并按下该按钮时,它会执行该动作应该执行的操作)。

这些键绑定是为我的面板(它是选项卡窗格中的选项卡)调用的。我尝试了按下 UP 键和只是一个(以确保这不是问题)。当相关选项卡处于焦点时,我键入这些键。

有什么建议吗?

4

1 回答 1

3

您的问题的一个可能原因是:

this.getInputMap().put(KeyStroke.getKeyStroke("a"),
            "pressedUpArrow");

不应该是这个吗?

this.getInputMap().put(KeyStroke.getKeyStroke("UP"),
            "pressedUpArrow");

您当前对其进行编码的方式,按下一个键并释放另一个键时触发PressedUpArrowAction()ReleasedUpArrowAction()

于 2012-10-24T14:01:34.807 回答