【发布时间】:2021-04-11 06:55:42
【问题描述】:
我试图为 JMenuItem 添加一个 CTRL + S + A 键盘快捷键。我正在使用以下代码
jMenuItem_a.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_A, KeyEvent.CTRL_MASK|KeyEvent.VK_S));
我想要的结果是 CTRL + S + A,但代码竟然是 CTRL + SHIFT + A。有什么问题?为什么我运行时它会将 S 转换为 Shift?
【问题讨论】:
-
你试过
KeyStroke.getKeyStroke(KeyEvent.CTRL_MASK, KeyEvent.VK_A | KeyEvent.VK_S) -
我试过了。但它不起作用!原来是CTRL + SHIFT + [未知键码]。在这种情况下,S 也被转换为 shift。
-
我想要的结果是 CTRL + S + A 你的意思是先按 Ctrl+S 然后在松开这些键后按 A 吗?或者你的意思是同时按下所有三个键 Ctrl+S+A?
-
不支持。您不能为两个字符创建 KeyStroke。您只能创建 KeyStroke 或两个元键(Control 或 Shift 或 Alt)加上一个字符。
-
我的意思是同时按下所有三个键。但现在,我明白你的意思了。
标签: java swing keyboard-shortcuts key-bindings