2010-09-15 4 views
7

L'ajout de raccourcis aux éléments de sous-menu JMenuBar dans le concepteur Java GUI GUI est évident, mais comment les raccourcis sont-ils ajoutés aux éléments du menu principal JMenuBar?Comment ajouter des raccourcis JMenuBar?

+0

Vous cherchez une façon de le faire programatically ou à travers le concepteur de GUI? Si le concepteur de l'interface graphique, quel IDE utilisez-vous? Est-ce Netbeans? –

+0

Je voudrais savoir comment le faire par programme? –

Répondre

19

Vous disposez de deux types de raccourcis clavier: mnémoniques et accélérateurs.

Les mnémoniques sont généralement déclenchées en utilisant Alt + KEY. C'est la lettre qui est soulignée dans le texte de l'élément de menu (F pour File, par exemple). Les accélérateurs sont des raccourcis à l'échelle de l'application qui sont généralement déclenchés à l'aide de Ctrl + KEY.


Pour utiliser mnémoniques, vous pouvez utiliser la méthode setMnemonic():

menuItem.setMnemonic('F'); 

Pour utiliser les accélérateurs, vous devez utiliser la méthode setAccelerator().

menuItem.setAccelerator(KeyStroke.getKeyStroke(
     java.awt.event.KeyEvent.VK_S, 
     java.awt.Event.CTRL_MASK)); 
+0

Merci. 'menuItem.setMnemonic ('F');' a fait exactement ce qui était nécessaire. – jacknad

+1

Notez que 'setMnemonic' utilise toujours la première occurrence de la lettre (voir' SwingUtilities # findDisplayedMnemonicIndex'). Si vous devez utiliser une dernière occurrence, utilisez 'AbstractButton # setDisplayedMnemonicIndex', qui correspond à' Action.DISPLAYED_MNEMONIC_INDEX_KEY'. (BTW je vous recommande de définir les propriétés de l'action, puis appelez 'AbstractButton # setAction' au lieu d'appeler directement ces méthodes JComponent.) –

+0

Quelle est la différence entre l'accélérateur et setMnemonic? –

2

Le site Sun/Oracle a un tutoriel sur l'utilisation JMenu's Lorsque vous faites affaire avec des touches de raccourci, Java utilise mnémoniques ou accélérateur en fonction du raccourci que vous souhaitez utiliser. vous pouvez définir le mnémonique en utilisant les éléments suivants

menuItem.setMnemonic(KeyEvent.VK_T); 

et l'accélérateur via

menuItem.setAccelerator(KeyStroke.getKeyStroke(
         KeyEvent.VK_T, ActionEvent.ALT_MASK)); 

Ce sont là deux exemples tirés du lien ci-dessus

Questions connexes