开发者

Java JMenuItem Accelator Snow Leopard

开发者 https://www.devze.com 2022-12-13 12:29 出处:网络
about = new JMenuItem(\"About\"); about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask()))));
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.

0

精彩评论

暂无评论...
验证码 换一张
取 消