Por favor, haz un clic sobre los anuncios cuando pases por mi blog, ya? =)

Como detectar tecla Escape en JDialog y JForm

5 comentarios
A diferencia de los cuadros de diálogo de Windows, los JDialog no se cierran si un presiona le tecla Escape ( los InputDialog y ShowConfirmationDialog son la excepción).

Para agregarle este rasgo a nuetros JDialog ( y , si queremos a algunos JFrame), podemos usar este código:


import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.KeyStroke;

/**
*
* @author Jason Matamala
*/
public class AuxDialog extends javax.swing.JDialog
{

/** Creates new form AuxDialog */
public AuxDialog (java.awt.Frame parent, boolean modal)
{
super (parent, modal);
addEscapeKey ();
initComponents ();
}
public AuxDialog (JDialog parent, boolean modal)
{
super (parent, modal);
addEscapeKey ();
initComponents ();
}
private void addEscapeKey ()
{
// Handle escape key to close the dialog

KeyStroke escape = KeyStroke.getKeyStroke (KeyEvent.VK_ESCAPE, 0, false);
Action escapeAction = new AbstractAction ()
{
public void actionPerformed (ActionEvent e)
{
dispose ();
}
};

getRootPane ().getInputMap (JComponent.WHEN_IN_FOCUSED_WINDOW).put (escape, "ESCAPE");
getRootPane ().getActionMap ().put ("ESCAPE", escapeAction);
}

//aqui se haria el empaquetamiento de la interface grafica....
private void initComponents()
{
//....
}
} //fin clase

5 comentarios :

Anónimo dijo...

Rekordoba, una marravilla tu aporte, muchas gracias, saludos

Anónimo dijo...

muy bueno, recorrí un montón de páginas y nada, la tuya me solucionó el escape, gracias.

Pablo López dijo...

Excelente aporte.
Gracias.

Hansel Suarez dijo...
Este comentario ha sido eliminado por el autor.
Hansel Suarez dijo...

Excelente amigo, me sirvió mucho.