【问题标题】:Set Multiple Masks for KeyStroke为 KeyStroke 设置多个掩码
【发布时间】:2015-06-24 22:00:44
【问题描述】:

如何制作具有多个修饰符蒙版的梯形失真?由于没有明确指定命令掩码,Apple 建议这样做,以获取掩码:

Toolkit.getDefaultToolkit().getMenuShortcutMask();

举个例子:

KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutMask();

在 OS X 上,这将允许我使用这个加速器:Cmd+N/⌘N。它也显示在菜单栏上:

但是,如果我需要组合修饰符掩码怎么办?像这样:Cmd+Option+N/⌘⌥N。我试过这个:

KeyStroke.getKeyStroke("command option n");

但它不这样做。 java.awt.Toolkit 似乎没有给我这个选项。那么如何添加多个掩码设置为加速器呢?

【问题讨论】:

  • 我没试过,但理论上你应该可以按位或修饰符Toolkit.getDefaultToolkit().getMenuShortcutMask() | KeyEvent.VK_ALT_DOWN_MASK或类似的

标签: java macos swing keyboard-shortcuts keystroke


【解决方案1】:

工具包的getMenuShortcutKeyMask() 在Mac OS X 上返回InputEvent.META_MASK。您可以在其中添加InputEvent.ALT_MASK 以获得⌥⌘N

private static final int MASK =
    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
…
KeyStroke.getKeyStroke(KeyEvent.VK_N, MASK | InputEvent.ALT_MASK)

example 开始会产生如图所示的结果:

【讨论】:

  • 你是天才。你解决了我的问题!!!! :D 只是对于其他来这里的人,请不要用KeyEvent 代替InputEvent,你不会得到相同的结果。 :)
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多