mel*_*ldi 3 java keyboard-shortcuts java-8 javafx-8
我正在尝试设置保存文件的快捷方式。
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_ANY);
Run Code Online (Sandbox Code Playgroud)
我通过以下方式触发操作:
sceneRoot.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (saveShortcut.match(event)) {
saveProject.fire();
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,仅按一下S键即可触发该事件。关于为什么这样的任何想法?
KeyCodeCombination
构造函数中所有修饰符的默认值为RELEASED
。因此,您的保存快捷方式将键S与Shift释放,Alt释放,Meta释放以及Control按下或释放键相匹配(ANY
您指定的值与按下或释放匹配)。
如果您希望仅匹配Ctrl+ S,则应使用
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN);
Run Code Online (Sandbox Code Playgroud)
更好的是
public static final KeyCombination saveShortcut = new KeyCodeCombination(KeyCode.S, KeyCombination.SHORTCUT_DOWN);
Run Code Online (Sandbox Code Playgroud)
这将快捷键适当的平台(例如匹配Ctrl+ S在Windows和Cmd+ S在Mac)。
归档时间: |
|
查看次数: |
926 次 |
最近记录: |