键绑定在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键的原因。