我想在Java Swing菜单栏中添加快捷键。以下是我的尝试。
jMenuItem1.setText("Create");
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));
我想要三个KeyEvent.VK_C, KeyEvent.CTRL_MASK
和KeyEvent.SHIFT_MASK
。
答案 0 :(得分:6)
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK+ALT_MASK)
答案 1 :(得分:3)
KeyStroke.getKeyStroke(KeyEvent.VK_C,21);
http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/KeyStroke.html#getKeyStroke(int,int)
了解修饰符,你就会知道21(或2和1)的用途......
答案 2 :(得分:3)
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,java.awt.Event.CTRL_MASK | java.awt.Event.SHIFT_MASK));
答案 3 :(得分:0)
要指定加速器,您必须使用 KeyStroke 对象,该对象结合了键(由 KeyEvent 常量指定)和修饰键掩码(由 ActionEvent 常量指定)。
引用的“修饰键掩码”是通过按位操作从多个 ActionEvent 创建的,因此在 setAccelerator()
方法中指定多个事件的按位 OR 执行相同的操作。
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
java.awt.Event.CTRL_MASK | java.awt.Event.SHIFT_MASK));
要启用此跨平台(即在 Mac 上使用 Command
按钮而不是 Control
),只需将 java.awt.Event.CTRL_MASK
替换为:
@SuppressWarnings("deprecation")
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); // Java 9 or older
或
Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx(); // Java 10 or newer
对于看起来像的最终 setAccelerator
jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() |
java.awt.Event.SHIFT_MASK));
在 Mac 上,您还会注意到菜单中的加速器文本本身也会显示 CMD 符号,而在 Windows 上,它仍会显示 CTRL(例如 CMD+S 与 CTRL+S)。