Java 将键组合绑定到JFrame

Java 将键组合绑定到JFrame,java,swing,keyboard-shortcuts,action,keystroke,Java,Swing,Keyboard Shortcuts,Action,Keystroke,到目前为止,我已使用ESC键关闭窗口,代码如下: KeyStroke escapeKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false); Action escapeAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { screen.dispose(); }

到目前为止,我已使用ESC键关闭窗口,代码如下:

KeyStroke escapeKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
    Action escapeAction = new AbstractAction() {
         public void actionPerformed(ActionEvent e) {
            screen.dispose();
         }
    };
screen.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeKeyStroke, "ESCAPE");
screen.getRootPane().getActionMap().put("ESCAPE", escapeAction);
但我想知道如何添加CTRL+a事件?我记得读到过一种为按下/释放键设置布尔值的方法,但我看不到使用这段代码的效果,所以我想知道如何实现CTRL+a


谢谢

这是重要的
KeyStroke.getKeyStroke(…)
方法的第二个参数,因为您需要使用
InputEvent.CTRL\u DOWN\u MASK
来让KeyEvent.VK\u A成为一个控件-A

e、 g

我不担心使用使用布尔值的3参数方法,因为您更感兴趣的是按键,而不是按键或按键释放

关于你的评论:


更正我先前的评论。如果我让它工作,比如说Ctrl+W。Ctrl+A只是尝试在框架中的文本字段中执行其本机的“全选”功能。有办法避免吗


据我所知,如果有焦点的组件(比如JTextArea)直接响应ctrl-a键,这将是一个问题。为了解决这个问题,您可以向这个组件添加相同的绑定,但一定要将它绑定到使用
JComponent.WHEN_条件。

谢谢,这似乎是对的,但你知道我会为最后两行写些什么吗?现在我做的是:
screen.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(CtrlakeyStrope,“CTRLA”)
screen.getRootPane().getActionMap().put(“CTRLA”,ctrlAAction)不幸的是,框架对ctrl+a或ctrl或a都没有反应=(更正我之前的评论。如果我使用Ctrl+W,它会起作用。Ctrl+A只是尝试在框架中的文本字段中执行其本机的“全选”功能。有没有办法避免这种情况?
KeyStroke ctrlAKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A,
     InputEvent.CTRL_DOWN_MASK);