2010-09-15 36 views
7

Agregar accesos directos a los elementos del submenú JMenuBar en el diseñador de la GUI de Java Swing es obvio, pero ¿cómo se agregan los accesos directos a los elementos del menú principal de JMenuBar?¿Cómo agregar los atajos de JMenuBar?

+0

¿Está buscando una manera de hacerlo mediante programación o a través del diseñador de GUI? Si el diseñador de la GUI, ¿qué IDE estás usando? ¿Es esto Netbeans? –

+0

Me gustaría saber cómo hacerlo programáticamente? –

Respuesta

19

Tiene dos tipos de atajos de teclado: mnemónicos y aceleradores.

Los mnemotécnicos generalmente se activan usando Alt + KEY. Esa es la letra que se subraya en el texto del elemento del menú (F para Archivo, por ejemplo). Los aceleradores son accesos directos a toda la aplicación que generalmente se desencadenan con Ctrl + KEY.


Para utilizar mnemotécnicos, puede utilizar el método de setMnemonic():

menuItem.setMnemonic('F'); 

Para utilizar aceleradores, usted tiene que utilizar el método setAccelerator().

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

Gracias. 'menuItem.setMnemonic ('F');' hizo exactamente lo que se necesitaba. – jacknad

+1

Tenga en cuenta que 'setMnemonic' siempre utiliza la primera aparición de la letra (consulte' SwingUtilities # findDisplayedMnemonicIndex'). Si necesita utilizar una última aparición, use 'AbstractButton # setDisplayedMnemonicIndex', que corresponde a' Action.DISPLAYED_MNEMONIC_INDEX_KEY'. (Por cierto, te recomiendo que establezcas propiedades de acción y luego llames a 'AbstractButton # setAction' en lugar de llamar directamente a esos métodos JComponent.) –

+0

¿Cuál es la diferencia entre accelerator y setMnemonic? –

2

El sitio de Sun/Oracle tiene un gran tutorial sobre el uso JMenu's Cuando se trata de teclas de acceso directo, Java utiliza mnemotécnica o acelerador en función del acceso directo que desea utilizar. puede configurar la tecla de acceso utilizando la siguiente

menuItem.setMnemonic(KeyEvent.VK_T); 

y el acelerador a través

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

Estos son dos ejemplos tomados desde el enlace anterior