我正在尝试设置保存文件的快捷方式。
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 键即可触发该事件。关于为什么这么做的任何想法?
答案 0 :(得分:4)
KeyCodeCombination
构造函数中所有修饰符的默认值为RELEASED
。因此,保存快捷方式与 S 键匹配, Shift 已发布, Alt 已发布, Meta 已发布,按下或释放控制(您指定的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);
将匹配适合平台的快捷键(例如, Ctrl + S 在Windows上 Cmd + S 在Mac上。)