2009-12-09 4 views
0
about = new JMenuItem("About"); 
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask())))); 
JMenu help = new JMenu("Help"); 
help.add(about); 

Je me demandais pourquoi mes aaccelerators ne fonctionnaient pas. Je cours cela dans Snow Leopard avec JavaSe-1.6 VM. Ils fonctionnent si je baisse le menu, puis essayez la séquence de touches. MerciJava JMenuItem Accélérateur Snow Leopard

Répondre

0

La ligne 2 me ressemble à une erreur.

ne devrait-il être quelque chose comme

getKeyStroke(KeyEvent.VK_A, Toolkit...getMenuShortcutMask()) 

?

c.-à-d. GetKeyStroke a 2 arguments, séparés par une virgule.

En utilisant Toolkit...getMenuShortcutMask pour obtenir la clé dépendante du système d'exploitation est une idée très intelligente, soit dit en passant. Je n'avais jamais pensé à faire ça.

0

Ooh, je pense que je comprends le vrai problème:

Accélérateurs ne fonctionnent quand ils sont visibles - ils vous permettent de vous déplacer dans le menu en faisant un peu de caractère dans un élément de menu « magique ».

Je pense que ce que vous cherchez sont mnémoniques. Ceux-ci vont déclencher vos éléments de menu de n'importe où lorsque la touche associée est pressée.

mnémoniques communs sont Alt-F4 pour tuer des programmes (c'est Cmd-Q pour vous), Ctrl-S enregistrer, Ctrl-C pour copier, etc.

0

Désolé, la deuxième ligne n'est pas correcte. Je dois avoir accidentellement ajouté que K :-) J'utilisais un mnémotechnique auparavant mais il fallait aussi que le menu descende pour fonctionner. Je veux juste un raccourci clavier. Je suis passé à l'aide d'accélérateurs parce que ce que le OSX java doc suggests.