我正在尝试设置保存文件的快捷方式。
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_ANY);
我通过以下方式触发操作:
sceneRoot.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (saveShortcut.match(event)) {
saveProject.fire();
}
}
});
但是,仅按S键即可触发该事件。关于为什么这样的任何想法?
最佳答案
KeyCodeCombination
构造函数中所有修饰符的默认值为RELEASED
。因此,您的保存快捷方式与按下Shift释放,Alt释放,Meta释放和Control的键S按下或释放(您指定的ANY
值匹配按下或释放)相匹配。
如果您只想匹配Ctrl + S,则应使用
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN);
更好的是
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.SHORTCUT_DOWN);
与适用于该平台的快捷键相匹配(例如,在Windows上为Ctrl + S,在Mac上为Cmd + S)。