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).
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:
showOpenDialog(null)
: Abre un cuadro de dialogo de apertura de fichero.showSaveDialog(null)
: Abre un cuadro de dialogo de guardado de fichero.setCurrentDirectory(String ruta)
: Establece la ruta en la que se abre el cuadro de dialogo.getSelectedFile()
: Devuelve un objeto File con el fichero seleccionado.Referencias: https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html
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:
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");
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");
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?");
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);
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);
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