Los cuadros de dialogo, son objetos independientes de la ventana de trabajo (aunque pueden bloquearla). Normalmente, los utilizaremos para comunicar mensajes o para realizar acciones que por sus características, se ha de realizar aparte de la pantalla principal.
Los diálogos se pueden plantear como modales, en cuyo caso, el proceso principal queda interrumpido hasta que se cierre el cuadro, o no modales (modeless) que permite seguir trabajando con otras pantallas.
Disponemos de tres objetos orientados a la presentación de Diálogos
JOptionPane – Cuadros de dialogo estándar, pensados para pedir confirmación, o solicitar algún dato
JColorChooser – Para elegir colores
JFileChooser – Para elegir ficheros
Para el resto de casos, en donde existe mayor complejidad, siempre nos queda utilizar la clase JDialog
Utilización de JOptionPane
Esta clase, nos permite crear y personalizar distintos cuadros de dialogo, controlando el título del cuadro, el icono, el texto del dialogo y el texto del botón.
Dispone de cuatro métodos:
showConfirmDialog() El más simple, presenta un cuadro de dialogo con el título “Seleccione una opción” y acepta respuestas SI, NO, y CANCEL
showMessageDialog() Que presenta un simple cuadro con un botón
Para este ejemplo, hemos creado una primera clase que muestra 4 botones radio, para que indiquemos que tipo de mensaje (Información, Error, Aviso o Interrogación) queremos ver.
Hemos suscrito la clase MyItemListener para que reciba los eventos, eso hará que en cualquier cambio que hagamos a la botonera, se llamara inmediatamente a nuestra clase.
En ella, vemos que botón se ha pulsado, e invocamos a showMessageDialog con los parámetros adecuados.
showOptionDialog () Que presenta una pantalla mucho más personalizable
Este método dispone de más parámetros para la personalización.
Parent | – Pantalla origen para bloquear, y presentar dentro del parent |
String parentComponent | mensaje a presentar, puede ser un array de objetos
|
String message | Titulo de la ventana
|
messageType | Estilo del mensaje. Controla la presentacion
ERROR_MESSAGE INFORMATION_MESSAGE WARNING_MESSAGE QUESTION_MESSAGE PLAIN_MESSAGE
|
optionType | opciones a presentar, para indicar los botones de respuesta
DEFAULT_OPTION YES_NO_OPTION YES_NO_CANCEL_OPTION OK_CANCEL_OPTION |
options | Array de objetos que han de aparecer en la línea de botones |
Icon | Icono a presentar, su valor por defecto, lo establece messageType |
Title | El título del cuadro de dialogo |
initialValue | El valor por defecto |
Ejemplo
Cambiando nombre de los botones, y recogiendo respuesta
showInputDialog – Presenta un campo de entrada y permite recibir el resultado
Si solo necesitamos recibir una String….
En este ejemplo, presenta un desplegable y dejamos prefijada la opción “Dos”(1)
Utilización de JColorChooser
En el siguiente programa, vemos como se muestra una pantalla con un botón, y en el evento del mismo, mostramos una ventana JColorChooser para elegir el color; a la vuelta asignaremos el color al fondo de la ventana
Para obtener la ventana y recuperar el valor elegido utilizamos
En donde indicamos la Frame considerada origen, para que se quede bloqueada mientras estamos en diálogo, el título que ha de aparecer en el panel de selección de colores, y el valor actual, para poderlo mostrar al usuario. Cuando se cierre la venta, si han elegido un color, nos lo devolverá y lo recogeremos en newColor, por lo que solo quedará asignarlo al background
Utilización de JFileChooser
Este componente está pensado para elegir ficheros, navegando por el sistema de ficheros, por lo que nos facilitara el fichero con el path completo, para poderlo usar nos basta con crear el objeto JFileChooser y luego llamar al método showOpenDialog(parent) si buscamos un fichero existente o showSaveDialog, si vamos a grabar el fichero. Si nuestra pantalla no se adapta a estas funcionalidades, podemos utilizar showDialog para personalizar el texto que aparece como título. El resto de código lo utilizamos para configurar lo que queremos ver.
En el caso de OpenDialog, cuando se vuelve, se comprueba que se haya seleccionado un fichero
Y si es así, se extraen todos los nombres que han podido ser seleccionados, y se utiliza showMessageDialog para presentar la lista en pantalla.