2010-09-15 8 views
7

L'aggiunta di scorciatoie agli elementi di sottomenu JMenuBar nella finestra di progettazione di Java Swing è ovvia, ma come vengono aggiunte le scorciatoie alle voci del menu principale di JMenuBar?Come aggiungere le scorciatoie di JMenuBar?

+0

Sei alla ricerca di un modo per farlo programatically o attraverso il designer della GUI? Se il progettista della GUI, quale IDE stai usando? È questo Netbeans? –

+0

Mi piacerebbe sapere come farlo programmaticamente? –

risposta

19

Hai due tipi di scorciatoie da tastiera: mnemonici e acceleratori.

I mnemonici vengono generalmente attivati ​​utilizzando Alt + KEY. Questa è la lettera sottolineata nel testo della voce di menu (ad esempio F per File). Gli acceleratori sono scorciatoie a livello di applicazione che di solito vengono attivate utilizzando Ctrl + KEY.


Per utilizzare mnemonici, è possibile utilizzare il metodo setMnemonic():

menuItem.setMnemonic('F'); 

Per utilizzare gli acceleratori, è necessario utilizzare il metodo setAccelerator().

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

Grazie. 'menuItem.setMnemonic ('F');' ha fatto esattamente ciò che era necessario. – jacknad

+1

Si noti che 'setMnemonic' usa sempre la prima occorrenza della lettera (vedere' SwingUtilities # findDisplayedMnemonicIndex'). Se è necessario utilizzare un'ultima occorrenza, utilizzare 'AbstractButton # setDisplayedMnemonicIndex', che corrisponde a' Action.DISPLAYED_MNEMONIC_INDEX_KEY'. (A proposito, ti consiglio di impostare le proprietà dell'azione e chiamare 'AbstractButton # setAction' invece di chiamare direttamente i metodi di JComponent.) –

+0

Qual è la differenza tra accelerator e setMnemonic? –

2

Il sito Sun/Oracle ha un grande tutorial su come utilizzare JMenu's Quando si tratta di tasti di scelta rapida, Java utilizza mnemonico o acceleratore a seconda del collegamento che si desidera utilizzare. è possibile impostare il mnemonica usando la seguente

menuItem.setMnemonic(KeyEvent.VK_T); 

e l'acceleratore via

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

Questi sono entrambi esempi tratti dal link qui sopra

Problemi correlati