键绑定不起作用Java Swing

时间:2012-10-24 13:56:23

标签: java swing key-bindings

我正在一个面板上实现键绑定,该面板会监听是否按下了箭头键。

如果他们被按下,他们会采取行动。 我的代码:

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());
    }

动作有效(当我将它们映射到按钮并按下按钮时,它会执行动作应该执行的操作)。

为我的面板调用这些键绑定(这是tabbedpane中的一个标签)。我试过两次按下按键UP和只是一个(以确保这不是问题)。 当相关标签处于焦点时,我键入这些键。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

问题的一个可能原因是:

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

不应该是这个吗?

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

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