在 Java (OSX) 中设置三个按钮加速键热键

发布于 2024-08-11 05:56:37 字数 546 浏览 7 评论 0原文

我正在尝试更改我正在使用的java应用程序中的一些热键,似乎我正在使用的系统可能无法使用三个按钮组合键。我们当前有一个 JMenuItem 项,我们通过如下调用设置热键:

menuItem.setAccelerator(getAcceleratorKey(accelerator));

这里是 getAcceleratorKey 方法:

    private KeyStroke getAcceleratorKey(int keyCode) {

    return KeyStroke.getKeyStroke(
                    keyCode,
                    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
                    false);
}

看来该方法作为参数的 keyCode 只能是用命令按下的一个键。那么我该如何执行 Command-shift z 之类的操作来撤消呢?我需要使用不同的类吗?

I am trying to change a few hot-keys in the java application I am wokring on and it seems that the system I am using may not work with three button key combinations. We currently have a JMenuItem item and we set the hotkey with a call like this:

menuItem.setAccelerator(getAcceleratorKey(accelerator));

And here is the getAcceleratorKey method:

    private KeyStroke getAcceleratorKey(int keyCode) {

    return KeyStroke.getKeyStroke(
                    keyCode,
                    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
                    false);
}

It seems that the keyCode that this method takes as a parameter can only be one key pressed with command. So how then would I do something like Command-shift z for undo? Do I need to use a different class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

失而复得 2024-08-18 05:56:37

KeyStroke.getKeyStroke() 将修饰符作为参数。它们的组合应该会给你你想要的:

KeyStroke.getKeyStroke(keyCode, 
  java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);

KeyStroke.getKeyStroke() takes modifiers as a parameter. A combination of them should give you what you want:

KeyStroke.getKeyStroke(keyCode, 
  java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文