Crear ventanas jdialoge tipo modal


En uno de mis proyectos de IHC necesitaba crear un mensaje de diálogo personalizado. Dicho mensaje debía ser enviado a pantalla y desactivar la opción de que el usuario pudiera dar clic o hacer cambios a la ventana desde la que se invocaba dicho mensaje de dialogo. Una opción era utilizar joptionpane, pero no podía personalizarlo completamente como yo deseaba, de tal manera que la solución fue usar jframe de tipo dialoge.
La solución es la siguiente: El editor usado es netbeans 8.0, no es necesario copiar y pegar todo el código, creen una jframe un nuevo proyecto en netbeans, sin agregarle ninguna clase, es decir, completamente vacío. después creen un nuevo paquete y agreguen un jframe de nomvre ventanaPrincipal, después un jframeDialoge de nombre ventana2. Una vez realizado esto, modifiquen el código generado automáticamente por netbeans  de tal modo que quede como el siguiente código. Las líneas de código en rojo son las opciones que tienen que modificar.

/*código para el jframe ventanaPrincipal*/
package ventana;
public class ventanaPrincipal extends javax.swing.JFrame {
    public ventanaPrincipal() {
        initComponents();
        setLocationRelativeTo(null); /*para centrar la ventana principal al iniciar la aplicación*/
    }

    @SuppressWarnings("unchecked")
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        new ventana2(this, true).setVisible(true);
    }
   public static void main(String args[]) {

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ventanaPrincipal().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton2;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}
En la ventana principal, sólo agregué un panel, y un botón en el evento de clic en el botón agregué el siguiente código.  new ventana2(this, true).setVisible(true);

/*código para el jframe ventana2*/
package ventana;
public class ventana2 extends javax.swing.JDialog {
    public ventana2(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        setLocationRelativeTo(null);
        initComponents();
    }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        this.dispose();
    } 
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}

En el jdialoge agregué un jpanel, jlabel y dos jbuttons, en los jbutos se agregó lo sguiente


Y pues eso es todo. Si tienen dudas dejen sus comentarios

Comentarios:

@