0
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 在雪豹中运行它。如果我拉下菜单然后尝试按键顺序,它们确实有效。谢谢

4

3 回答 3

0

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

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

我认为您正在寻找的是助记符。当按下相关键时,它们将从任何地方触发您的菜单项。

常见的助记符是Alt-F4杀死程序(这是Cmd-Q给你的)、Ctrl-S保存、Ctrl-C复制等。

于 2009-12-09T19:43:37.277 回答
0

第 2 行对我来说似乎是一个错误。

不应该是这样的

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

?

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

顺便说一句,使用Toolkit...getMenuShortcutMask获取操作系统相关密钥是一个非常聪明的主意。我从没想过这样做。

于 2009-12-09T19:41:00.887 回答
0

抱歉,第二行不正确。我一定是不小心添加了那个 K :-) 我之前使用过助记符,但它也必须下拉菜单才能起作用。我只想要一个键盘快捷键。我改用加速器是因为OSX java doc 所建议的。

于 2009-12-09T19:53:45.313 回答