Cuando el JDialog tiene el foco, en realidad lo tiene uno de sus componentes hijos (un JTextField, JButton o el que sea). Si añadimos al JDialog un addKeyListener(), no nos sirve de nada. La tecla F1 la captura el componente interno y no se transmite hasta el JDialog.
Para poder hacerlo, hay que hacer algo tan complejo como esto
Codigo: | |
((JComponent)dialogo.getContentPane()).registerKeyboardAction( unKeyListener, "AYUDA", KeyStroke.getKeyStroke(KeyEvent.VK_F1 , 0, false), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); |
donde "AYUDA" es cualquier texto y el WHEN_ANCESTOR_OF_FOCUSED_COMPONENT sirve para que se transmita desde el JTextField hasta el JDialog.
1 comentario:
Holas saludos...
Tengo el problema de cerrar un JDialog desde la tecla ESCAPE
e probado el codigo pero donde hay que ponerlo, en el constructor en el addKeyListener....
indiqueme por fabor; muchas gracias
Publicar un comentario