我正在尝试更改我正在使用的java应用程序中的一些热键,似乎我使用的系统可能无法使用三个按键组合。我们目前有一个JMenuItem项目,我们通过这样的调用设置热键:
menuItem.setAccelerator(getAcceleratorKey(accelerator));
这是getAcceleratorKey方法:
private KeyStroke getAcceleratorKey(int keyCode) {
return KeyStroke.getKeyStroke(
keyCode,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
false);
}
这个方法作为参数的keyCode似乎只能用命令按下一个键。那么我怎么能像Command-shift z那样做撤销呢?我需要使用不同的课程吗?
答案 0 :(得分:1)
KeyStroke.getKeyStroke()将修饰符作为参数。他们的组合应该给你你想要的东西:
KeyStroke.getKeyStroke(keyCode,
java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);