about = new JMenuItem("About");
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask()))));
JMenu help = new JMenu("Help");
help.add(about);
I was wondering why my aaccelerators were not working. I am running this in snow leopard with JavaSe-1.6 VM. They do work if开发者_C百科 I pull the menu down then try the key sequence. Thanks
Ooh, I think I understand the REAL problem:
Accelerators only work when they're visible - they allow you to move through the menu by making some character in a menu item "magic".
I think what you're looking for are mnemonics. Those will fire off your menu items from anywhere when the associated key is pressed.
Common mnemonics are Alt-F4 to kill programs (that's Cmd-Q for you), Ctrl-S to save, Ctrl-C to copy, etc.
Line 2 looks like an error to me.
Shouldn't it be something like
getKeyStroke(KeyEvent.VK_A, Toolkit...getMenuShortcutMask())
?
i.e. getKeyStroke has 2 arguments, separated by a comma.
Using Toolkit...getMenuShortcutMask
to get the OS dependent key is a very clever idea, by the way. I'd never thought to do that.
Sorry, line two isn't correct. I must have accidentally added that K :-) I was using a mnemonics before but it also had to have the menu pulled down to function. I just want a keyboard shortcut. I switched to using accelerators because that what the OSX java doc suggests.
精彩评论