tags:

views:

63

answers:

3
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 I pull the menu down then try the key sequence. Thanks

A: 

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.

Carl Smotricz
A: 

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.

Carl Smotricz
A: 

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.

Jeremy McGee