为 KeyStroke 设置多个掩码

Set Multiple Masks for KeyStroke

我将如何着手制作具有多个修改器蒙版的梯形石?由于缺少明确指定命令掩码,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 似乎没有给我这个选项。那么如何添加多个掩码设置为加速器呢?

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

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

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