Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

martes, 28 de junio de 2011

Mostrar otra ventana (JDialog) al pulsar botón.

Usando Netbeans7.0 se agregan en el nuevo proyecto dos ventanas. La ventana principal tipo jFrame con un boton dentro y la ventana secundaria de tipo jDialog.

Ventana principal (JFrame):
package dosventanas;
public class ventanaPrincipal extends javax.swing.JFrame {
public ventanaPrincipal() {
initComponents();
}
@SuppressWarnings("unchecked")
+ Generated Code //Aqui va codigo generado por Netbeans (ventana y boton).

private void BotonMostrarJDialog1ActionPerformed(java.awt.event.ActionEvent evt) {
new ventana2(this, true).setVisible(true);
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new ventanaPrincipal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton BotonMostrarJDialog1;
// End of variables declaration
}


Ventana secundaria (JDialog):
package dosventanas;
public class ventana2 extends javax.swing.JDialog {
public ventana2(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}

@SuppressWarnings("unchecked")

+ Generated code //Aqui va codigo generado por Netbeans (ventana2)

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
ventana2 dialog = new ventana2(new javax.swing.JFrame(), 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
// End of variables declaration
}


Resultado:
Nota1: En este ejemplo la ventana principal queda inhabilitada hasta que no se cierre la ventana secundaria (jDialog). Las ventanas de tipo jDialog tienen la pecurialidad de que al abrirse bloquean el resto (por seguridad).

Nota2: En netbeans7.0 (por defecto) no aparece en la lista el paquete "jDialog Form". Para ello, clic con botón izquierdo sobre icono paquete del proyecto y en el menu que aparece seguir el siguiente camino:

- New - Other - Swing GUI FORMS - jDialog form. [Next] -

11 comentarios:

  1. Buen ejemplo. Necesito algo parecido, pero abriendo por botones muchos otros dialogos por ejemplo. Saber como es para abrir y cerrar estas ventanas secundarias.

    ResponderEliminar
  2. Excelente tu post, no encontre uno hasta que llegue aqui y realiza lo que necesitaba, gracias.

    ResponderEliminar
  3. Necesito saber como cargar al hacer clic en un boton un jdialog dentro de jframe sin que se oculte ni quede deshabilitado el jframe, es decir cargar con un boton un jdialog en un jpanel de un jframe.

    gracias

    ResponderEliminar
    Respuestas
    1. Se cambia la linia:

      new ventana2(this, true).setVisible(true);

      por:

      new ventana2(this, false).setVisible(true);

      Eliminar
  4. Hola! Muy bueno el post, necesito obtener una ventana secundaria pero desde un item del menu principal.

    ResponderEliminar
  5. Muchas gracias por el aporte...

    ResponderEliminar
  6. una pregunta, puede hacerse una ventana por ejemplo desde un jframe a otro jframe? Porque yo voy a crear varios botones que te lleven a otras ventadas

    ResponderEliminar
  7. gracias pero tengo un problema, quisiera que una vez abierto el jDialog y pasarle datos al Jframe no se borren los datos que ya haya ingreado a cualquier textbox u otro componente..Gracias..

    ResponderEliminar
    Respuestas
    1. Prueba a substituir lo siguente:
      System.exit(0); por eso otro -> dialog.setVisible(false);

      Eliminar
  8. Hola, estoy trabajando en un proyecto con mvc y necesito enviar los datos del jdialog al controlador, pero no he podido me envia los campos vacios y no se por que :/

    ResponderEliminar

Con la tecnología de Blogger.