Java JMenuItem Accelerator Snow Leopard

时间:2009-12-09 19:34:05

标签: java jmenubar

about = new JMenuItem("About");
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask()))));
JMenu help = new JMenu("Help");
help.add(about);

我想知道为什么我的加速器没有工作。我用JavaSe-1.6 VM在雪豹中运行它。如果我向下拉菜单然后尝试按键序列,它们就可以工作。感谢

3 个答案:

答案 0 :(得分:0)

第2行看起来像是一个错误。

不应该像

那样
getKeyStroke(KeyEvent.VK_A, Toolkit...getMenuShortcutMask()) 

即。 getKeyStroke有两个参数,用逗号分隔。

顺便说一句,使用Toolkit...getMenuShortcutMask来获取依赖操作系统的密钥是一个非常聪明的想法。我从来没有想过这样做。

答案 1 :(得分:0)

是的,我想我理解真正的问题:

加速器仅在它们可见时才起作用 - 它们允许您通过在菜单项中使用某些字符“魔术”来移动菜单。

我认为你所寻找的是助记符。当按下相关键时,这些将从任何地方触发菜单项。

常用的助记符是 Alt-F4 来杀死程序(你的 Cmd-Q ), Ctrl-S 来保存, Ctrl-C 复制等

答案 2 :(得分:0)

对不起,第二行不正确。我一定是不小心加了K :-)我之前使用的是助记符,但它也必须将菜单拉下来才能运行。我只想要一个键盘快捷键。我切换到使用加速器,因为那是OSX java doc suggests