Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/01/2012, 23:42
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 6 meses
Puntos: 24
Respuesta: cerrar JFrame con tecla escape

Código Java:
Ver original
  1. public class VistaPrincipal extends javax.swing.JFrame {
  2.  
  3.     private VistaPrincipal() {
  4.         getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(
  5.             javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0), "Cancel");
  6.        
  7.         getRootPane().getActionMap().put("Cancel", new javax.swing.AbstractAction(){
  8.             @Override
  9.             public void actionPerformed(java.awt.event.ActionEvent e)
  10.             {
  11.                 close();
  12.             }
  13.         });
  14.        
  15.         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
  16.         addWindowListener(new java.awt.event.WindowAdapter() {
  17.             @Override
  18.             public void windowClosing(java.awt.event.WindowEvent evt) {
  19.                 close();
  20.             }
  21.         });
  22.     }
  23.  
  24.     private void close(){
  25.         java.awt.Toolkit.getDefaultToolkit().beep();
  26.         if (JOptionPane.showConfirmDialog(rootPane, "¿Desea realmente salir de la aplicación?",
  27.                 "Sistema", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){
  28.             logger.log(Level.INFO, "Salida del sistema.");
  29.             System.exit(0);
  30.         }
  31.     }
  32. }

Con ese código, cada vez que presiones la tecla escape te aparecerá una ventana de confirmación preguntándote si deseas realmente salir de la aplicación. Si no deseas dicha ventana de confirmación, pues elimina las filas correspondientes (están dentro del método close() como ya te habrás dado cuenta, y deja sólo lo de System.exit(0) y listo.)

Salu2.

Última edición por farfamorA; 30/01/2012 a las 23:43 Razón: Ortografía