Para darle un poco mas de caché a nuestras aplicaciones les mostraré código para cerrar un JDialog presionando la tecla ESC. Este ejemplo da para eso y mucho mas, ya depende de ustedes.
Primero necesitamos esta clase que es la que cacha los eventos del teclado:
Primero necesitamos esta clase que es la que cacha los eventos del teclado:
/**
* @JaverosAnonimos on Twitter
*/
public class KeyListenerCustom implements KeyListener{
private JDialog dialog=null;
public KeyListenerCustom(JDialog dialog){
System.out.println("Dialog!");
this.dialog=dialog;
}
public void keyTyped(KeyEvent e) {
System.out.println("Tecla apretada");
}
public void keyPressed(KeyEvent e) {
System.out.println("entro");
if(e.getKeyCode()==27) {//27 es el código de la tecla esc
System.out.println("Adios!");
dialog.setVisible(false);
}
}
public void keyReleased(KeyEvent e) {
System.out.println("Después de soltar la tecla!");
}
}
Y para probar esta clase un ejemplo de un JDialog implementandolo:public class EjemploESC extends javax.swing.JDialog {
/** Creates new form InformacionDialog */
public EjemploESC(java.awt.Frame parent, boolean modal,String name) {
super(parent, modal);
initComponents();
setTitle("Ejemplo cerrar con telca ESC");
jPanel1.grabFocus();
jPanel1.addKeyListener(new KeyListenerCustom(this));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jPanel1.setName("jPanel1"); // NOI18N
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("www.JaverosAnonimos.tk ");
jLabel1.setName("jLabel1"); // NOI18N
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("http://JaverosAnonimos.blogspot.com");
jLabel2.setName("jLabel2"); // NOI18N
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel3.setText("Presiona ESC para cerrar");
jLabel3.setName("jLabel3"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(63, 63, 63)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 78, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
EjemploESC dialog = new EjemploESC(null, true,"");
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
Nota: Disculpen en chorote del ejemplo pero este código fue generado con NetBeans si quiren descargar el fuente pueden hacerlo aquí
donde esta la descarga xD
ResponderBorrarPues estaba ahí... O_o Lo subiremos mas tarde gracias por avisar.
ResponderBorrarLo siento pero perdimos el proyecto, aunque ahí esta el código :) Saludos
ResponderBorrarMALASO... Cuando lo cierro, sigue encendido en el eclipse, eso quiere decir que sólo está oculto pero no sea cerrado por completo...
ResponderBorrarPublicar un comentario