键绑定在Java Swing中不起作用

键绑定在Java Swing中不起作用,java,swing,key-bindings,Java,Swing,Key Bindings,我正在一个面板上实现键绑定,它可以监听箭头键是否被按下 如果他们被按下,他们会做一个动作。 我的代码: private void createKeyBindings(){ actionMap = this.getActionMap(); inputMap = this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); this.getInputMap().put(KeyStrok

我正在一个面板上实现键绑定,它可以监听箭头键是否被按下

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

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());
    }
当我把它们映射到一个按钮并按下按钮时,动作就起作用了,它完成了动作应该做的事情

这些键绑定是为我的面板调用的,我的面板是选项卡窗格中的选项卡。我尝试了两种方法,一种是按下按键,另一种是一个按钮,以确保这不是问题所在。 我在有问题的选项卡处于焦点时键入这些键


有什么建议吗?

问题的一个可能原因是:

this.getInputMap().put(KeyStroke.getKeyStroke("a"),
            "pressedUpArrow");
不应该是这样吗

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

按照您当前的编码方式,按下一个键并释放另一个键,就会触发PressedParrowAction和ReleasedUpArrowAction。

请选择输出到GUI的位置,为了获得更好的帮助,请在@Stephen的答案之外发布一条消息-在上面的代码段中,您正在使用错误的inputMap注册击键:替换this.getInputMap.put。。使用inputMap。放置…谢谢,修复了该问题,但无法解决。没有任何输出到GUI。立即按ParrowAction可打印错误消息。动作是有效的,因为当我用setAction将它绑定到一个键上时,按下它就会起作用。有点厌倦了一遍又一遍地重复同样的动作:阅读@mKorbel的评论并遵循建议,特别是第二部分问题已经解决,谢谢你的建议。当我进行更改时,a仍然在错误的窗口中工作。是的,a只是为了测试它是否是误用Up键的原因。