Tabla de Contenidos

Ventanas de Dialogo

Un cuadro de diálogo es toda aquella ventana que me muestra una información y tiene botones a través de los cuales se da una respuesta pulsando un botón (Aceptar, Cancelar, Omitir, Guardar, Cargar, etc).

JFileChooser

La clase JFileChooser permite crear cuadros de diálogo para seleccionar ficheros, por ejemplo para las operaciones de guardar o abrir ficheros.

Para crear una instancia usaremos:

JFileChooser selector = new JFileChooser(); 
 
int opcion = selector.showOpenDialog(null);
if(opcion == JFileChooser.APPROVE_OPTION){ //Ha pulsado “Aceptar” 
   File fichero = selector.getSelectedFile()
   // Procesamos fichero
}

Métodos principales:

Referencias: https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

JOptionPane

La clase JOptionPane posee una serie de métodos estáticos mediante los cuales puede mostrar pequeños cuadros de dialogo genéricos. Me pueden servir para mostrar un mensaje, pedir un dato, pedir que pulse un botón, etc. Los métodos más útiles se detallan a continuación:

Mostrar Mensajes

El método showMessageDialog() recibe como mínimo 2 parámetros, el objeto del que depende y el mensaje.

El primer parámetro puede ser null y siempre se mostrará sobre la ventana que lo lanza. Si se indican más parámetros se puede modificar el título de la ventana y el icono que muestra.

JOptionPane.showMessageDialog(null, "Tu programa te saluda");

Introducir texto

Si lo que queremos es pedir datos al usuario mediante una ventana de dialogo, usaremos el método showInputDialog().

El método recibe el objeto padre (puede ser null) y un String con el mensaje que queremos mostrar. El texto que introduce el usuario es devuelto como tipo String por este método:

String nombre = JOptionPane.showInputDialog(null, "Introduce tu nombre");

Pedir confirmación

Si lo que queremos es pedir la confirmación del usuario para realizar algo, podemos usar el método showConfirmDialog().

Este método devuelve un int: 0,1 ó 2, dependiendo de la respuesta del usuario. (0 = Si; 1 = No; 2 = Cancelar) Recibe como parámetro la referencia a la ventana padre (podemos indicar null) y el String con el mensaje a mostrar:

int respuesta = JOptionPane.showConfirmDialog(null,"¿Desea eliminar este elemento?");

Seleccionar una opción

Con el método showOptionDialog() podemos ofrecer una serie de botones para seleccionar una opción en concreto.

Es el método que más parámetros recibe, pero su uso es igual de sencillo. Debemos indicarle un array con las opciones que queremos que ofrezca.

String[] opciones = {"Opcion A", "Opcion B", "Opcion C", "Opcion D"};
int respuesta = JOptionPane.showOptionDialog(frame, "Es necesario que seleccione una opcion", 
      "Titulo", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, 
      opciones, null);

JDialog

Representan a las ventanas secundarias que tendrá nuestra aplicación. No son elementos que contiene la paleta, sino que los crearemos en una clase nueva como contenedor de alto nivel de tipo JDialog. Posteriormente serán llamados desde nuestra aplicación ante un evento (p.e. pulsar un botón). Se crean de la misma forma que una ventana basada en un JFrame, y su clase será instanciada desde algún método de la ventana principal.

Los elementos JFileChooser o JOptionPane son instancias de JDialog.

La peculiaridad que tienen es que permiten ser definidas como ventanas modales. Esto quiere decir que permiten bloquear el uso y acceso al resto de la aplicación mientras están abiertos.

setModal(true);

Crear un JDialog a medida

Para crear un cuadro de diálogo accedo al menú de WindowBuilder y selecciono crear un elemento JDialog. Automáticamente se me genera una clase con el código referente a la creación de dicho diálogo. Se crea una cuadro genérico con dos botones (Aceptar, Cancelar).

Debemos añadir los listeners a dichos botones.

Puedo añadir todos los componentes que quiera del mismo modo que a un JFrame (Ventana principal del programa).

Posteriormente puedo crear mi cuadro de diálogo (JDialog), llamando a su constructor:

MiDialogo cuadro = MiDialogo();

Si necesito que mi cuadro reciba algún tipo de datos de la ventana principal, puedo pasarlo como atributo al constructor:

MiDialogo cuadro = MiDialogo(listaAlumnos);

© 2025 Fernando Valdeón