我正在一个面板上实现键绑定,该面板会监听是否按下了箭头键。
如果他们被按下,他们会采取行动。 我的代码:
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和只是一个(以确保这不是问题)。 当相关标签处于焦点时,我键入这些键。
有什么建议吗?
答案 0 :(得分:3)
问题的一个可能原因是:
this.getInputMap().put(KeyStroke.getKeyStroke("a"),
"pressedUpArrow");
不应该是这个吗?
this.getInputMap().put(KeyStroke.getKeyStroke("UP"),
"pressedUpArrow");
您目前对其进行编码的方式,PressedUpArrowAction()
和ReleasedUpArrowAction()
按下一个键并释放另一个键。