views:

386

answers:

3

I would like to assign a mnemonic to a JMenu using resource bundles (or the ResourceMap). So for example, the code without resource file would be...

JMenu fileMenu = new JMenu();
fileMenu.setText("File");   // this would be read from a resource file
fileMenu.setMnemonic('F');  // but the docs say this is obsolete
fileMenu.setMnemonic(KeyEvent.VK_F);

So how do I put the KeyEvent.VK_F in a resource file?

For a JMenuItem I can do it with actions, but this is JMenu.

A: 

You could do it in a similar way, and treat "FileMenu" as a (fake) action?

John Gardner
+1  A: 

Inside the resource file use the accelerator

add.Action.accelerator = control A

ShawnD
+6  A: 

Java's javax.swing.KeyStroke class bridges the gap:

JMenu fileMenu = new JMenu();
String mnemonic = // string from localization
fileMenu.setMnemonic(KeyStroke.getKeyStroke(mnemonic).getKeyCode());

Accelerators are not supported for JMenus, only for JMenuItems (which makes sense, since these invoke an action without using the menu at all).

Michael Brewer-Davis