Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Menu Mnemonics in Resource Files

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.

like image 826
Miles D Avatar asked Feb 06 '09 17:02

Miles D


Video Answer


2 Answers

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).

like image 51
Michael Brewer-Davis Avatar answered Jan 02 '23 14:01

Michael Brewer-Davis


Inside the resource file use the accelerator

add.Action.accelerator = control A

like image 24
ShawnD Avatar answered Jan 02 '23 15:01

ShawnD