0

我正在处理一个 Swing 鼠标事件,我想知道在Toolkit.getMenuShortcutKeyMask()事件发生时指定的键掩码是否已关闭。我显然不能使用通常的MouseEvent.isControlDown()方法,因为我想在 Mac 上使用 Command 键,这在 Mac OS 上无法正常工作。

如果任何其他修饰键被按下,我也不希望它触发。我希望它在 Ctrl/Command 是唯一按下的键时返回 true。我想我需要使用MouseEvent.getModifiersEx(),但我不肯定如何构建比较。

4

2 回答 2

0

我设法通过使用getModifiers()而不是做到这一点getModifiersEx()

public static boolean isMenuShortcutKeyDown(MouseEvent me) {
    return me.getModifiers() == Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
}

如果 using 有任何缺陷getModifiers(),请指出,但这似乎完美无缺。

于 2012-07-12T02:39:28.973 回答
0

因为修饰符提供了一个位掩码,并且其他修饰符可能同时处于活动状态,所以您不应该使用 ==,而是:

public static boolean isMenuShortcutKeyDown(MouseEvent me) {
    return (me.getModifiers() & Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) != 0;
}
于 2014-10-16T23:51:26.343 回答