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在雪豹中运行它。如果我向下拉菜单然后尝试按键序列,它们就可以工作。感谢
答案 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。