Java + Swing 020. Modo diseño en NetBeans. Llamar un jDialog interno desde un jFrame.

Ejecutar un formulario jDialog interno desde un jFrame

Ejercicio: Realizar una pequeña aplicación que permita ejecutar un formulario jDialog interno desde un jFrame.
Diseñamos el formulario en JFrame. El nombre para el jFrame es a criterio de cada uno, lo importante es el diseño de la misma. En la imagen podemos ver el diseño y los nombres de variables de cada objeto (etiquetas en rojo para los nombres de variable), esto es muy importante ya que cada método utiliza el nombre de variable correspondiente para referenciar al objeto en específico. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”.
Diseño del jDialog: a diferencia de en otras situaciones, este jDialog debe ser interno, por tanto se agrega como cualquier otro objeto, tomando de la paleta y soltando sobre el diseño del jFrame principal como se muestra en la imagen más abajo, lo demás es igual a como se trabaja con un formulario. Se puede alternar con el del jFrame seleccionado desde el “Inspector” al costado izquierdo. (clic para ampliar imagen)
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. Las variables de clase se pueden llamar desde cualquier método, por tanto se utiliza para objetos que se necesitan utilizar en varias ubicaciones.
Creamos los métodos siguientes en el apartado “Fuente”. Normalmente estos métodos los podemos agregar debajo del constructor del jFrame o al final de la declaración de variables. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. Se agregan comentarios para tratar de facilitar el entendimiento del funcionamiento de cada código.
Código Java
private void tableModel(){
//Configuramos tamaño de las columnas
jTbl.getColumnModel().getColumn(0).setPreferredWidth(10);
jTbl.getColumnModel().getColumn(1).setPreferredWidth(200);
jTbl.getColumnModel().getColumn(2).setPreferredWidth(100);
jTbl.getColumnModel().getColumn(3).setPreferredWidth(20);
//Utilizamos nuestra variable model para asignar a nuestra tabla el Model
model = (DefaultTableModel)jTbl.getModel();
model.setNumRows(0);
//Cargamos datos en la tabla si los campos no estan vacios.
//El signo ! sirve para negar. Por tanto decimos "si el campos es diferente de vacío".
if(!nom.getText().isEmpty() || !nac.getText().isEmpty() || !edad.getText().isEmpty()){
for (int i = 0; i < 10; i++) {
model.addRow(new Object[]{
i,nom.getText(),nac.getText(),edad.getText()
});
}
}
}
private void llamarJFrame(){
//Llamamos nuestra metodo para manejar la tabla y llenarla
tableModel();
//Centramos nuestro jDialog
jDialog.setLocationRelativeTo(null);
//La hacemos modal
jDialog.setModal(true);
//Establecemos dimensiones.
jDialog.setMaximumSize(new Dimension(800, 600));
jDialog.setMinimumSize(new Dimension(480, 230));
//Establecemos un título para el jDialog
jDialog.setTitle("Lista de Datos.");
//La hacemos visible.
jDialog.setVisible(true);
}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. En la mayoría de los casos se utiliza el “ActionPerformed”. Se agregan comentarios para tratar de facilitar el entendimiento.
Código Java
    private void mostrarActionPerformed(java.awt.event.ActionEvent evt) {                                        
//Método para llamar al jDialog
llamarJDialog();
}
Ejecutamos el formulario jFrame y llamamos a nuestro jDialog desde el botón. (clíc para ampliar imagen)

3 comentarios :

  1. ¿Se puede hacer llamar un jdialog desde otro jdialog? Saludos

    ResponderEliminar
    Respuestas
    1. Que tal, no hay ningún impedimento hasta donde tengo entendido. Es común utilizar multiples ventanas. Saludos.

      Eliminar