Met*_*ing 3 java swing action keyboard-shortcuts keystroke
到目前为止,我已经使用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);
Run Code Online (Sandbox Code Playgroud)
但我想知道如何添加CTRL + A事件?我记得读过你为keypressed/release设置布尔值的方法,但是我没有看到使用这段代码,所以我想知道如何实现CTRL + A.
谢谢
这是该KeyStroke.getKeyStroke(...)方法的第二个参数,因为您需要使用其中InputEvent.CTRL_DOWN_MASK的KeyEvent.VK_A作为控件-A.
例如,
KeyStroke ctrlAKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_DOWN_MASK);
Run Code Online (Sandbox Code Playgroud)
我不担心使用使用布尔值的3参数方法,因为您对按键更感兴趣,而不是按键或键释放.
关于你的评论:
更正我之前的评论.它有效,如果我做它让我们说Ctrl + W. Ctrl + A只是尝试在框架的文本字段中执行其原生"全选"功能.有什么办法可以避免吗?
从我理解的一点点来看,如果具有焦点的组件(例如JTextArea)直接响应ctrl-A键按下,这将是一个问题.要解决此问题,您可以向此组件添加相同的绑定,但确保将其绑定到使用该JComponent.WHEN_FOCUSED;条件的InputMap .