2009-02-06 6 views
8

Je voudrais attribuer un mnémonique à un JMenu en utilisant des ensembles de ressources (ou le ResourceMap). Ainsi, par exemple, le code sans fichier de ressources serait ...Java Menu Mnemonics dans les fichiers de ressources

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

Alors, comment dois-je mettre le KeyEvent.VK_F dans un fichier de ressources?

Pour un JMenuItem je peux le faire avec des actions, mais c'est JMenu.

Répondre

11

classe Java javax.swing.KeyStroke comble l'écart:

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

Accélérateurs ne sont pas pris en charge pour JMenu s, seulement pour JMenuItem s (ce qui est logique, car ceux-ci invoquent une action sans utiliser le menu du tout).

0

Vous pourriez le faire d'une manière similaire, et traiter "FileMenu" comme une (fausse) action?

1

A l'intérieur du fichier de ressources utiliser l'accélérateur

add.Action.accelerator = Contrôle A

Questions connexes