Cuadros de Diálogo con JOptionPane de Swing

 

Cuadros de Diálogo con JOptionPane de Swing

¿Qué es JOptionPane?

JOptionPane es una clase que nos provee una conjunto de ventanas de dialogo que es ideal, para mostrar mensajes al usuario. Ya sean informativos, advertencias, errores, confirmaciones… O incluso tenemos la posibilidad de solicitar la introducción de un dato.

Esta clase la encontramos dentro del paquete javax.swing. Y para que funcione, y que no nos muestre un error el IDE, debemos importar la librería. Para ello, tenemos dos opciones:

  • Importar únicamente la librería especifica de JOptionPane.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
}
}
view raw.java hosted with ❤ by GitHub
  • Importar el conjunto de librerías que engloban a la totalidad de Swing.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "Javadesde0.com");
}
}
view raw.java hosted with ❤ by GitHub

Si solamente vamos a trabajar con JOptionPane, es aconsejable utilizar la que solo importa dicha clase y no todas las librerias de Swing. Ya que de esta manera optimizamos mejor los recursos.

También, hay que destacar que es una clase estática (ya que no instanciamos nada para poder utilizarla).

Tipos de mensaje en JOptionPane

JOptionPane tiene diferentes ventanas de dialogo, entre las que se encuentran:

  • JOptionPane.showMessageDialog() nos permite mostrar un mensaje.
  • JOptionPane.showInputDialog() nos permite la entrada de datos (similar al famoso Scanner de la consola).
  • JOptionPane.ConfirmDialog() nos permite hacer preguntas con varías confirmaciones. Por ejemplo: Sí, No, Cancelar.
  • JOptionPane.showOptionDialog() engloba/unifica los 3 anteriores diálogos.

Método JOptionPane.showMessageDialog()

Bueno, comenzamos con el mensaje más sencillo de todos, el que menos florituras tiene.

Si escribimos JOptionPane y escribimos un . (o pulsamos CONTROL + ESPACIO), se nos abrirá en asistente con los métodos de showMessageDialog:

JOptionPane.showMessageDialog() con 2 parámetros

Por el momento, seleccionaremos el más sencillo de todos, el que solamente tiene dos parámetros, y escribiremos lo siguiente:

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "Javadesde0.com");
}
}
view raw.java hosted with ❤ by GitHub

El resultado, sería el siguiente:

Elementos de un JOptionPane

Aquí podemos ver las diferentes partes de una ventana. En este caso, utilizaremos simplemente tenemos que escojer un método y ver que parámetros necesitamos rellenar y guiarnos con la información de más abajo.

  • ParentComponent o ventana padre: que es el primer parámetro y representa a la ventana padre. Por el momento la pondremos a null y nos funcionará sin problema (null o component que puede ser un JFrame).
  • Message o mensaje: contiene el texto a mostrar (String).
  • Title o título: nos permite introducir un título a la ventana (String).
  • Icon o icono: nos permite introducir un icono a la ventana (Ejemplo JOptionPane.INFORMATION_MESSAGE).
  • messageType: nos permite introducir un número (ver segunda imagen. Escribimos un número. Por ejemplo: 0).

Tipos de iconos de un JOptionPane

Aunque los iconos se pueden hasta personalizar, es decir, poner uno propio (a lo que no llegaremos en este artículo). Vamos a explicar los diferentes tipos que tenemos por defecto y las diferentes maneras de llamarlos.

JOptionPane.showMessageDialog() con 4 parámetros

Bueno, una vez hemos visto, los elementos de JOptionPane y los iconos. Vamos a realizar un ejemplo con el método showMessageDialog() con 4 parámetros.

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "Mensaje sin icono PLAIN_MESSAGE o -1", "Javadesde0.com", -1);
JOptionPane.showMessageDialog(null, "Mensaje con ERROR_MESSAGE o 0", "Javadesde0.com", 0);
JOptionPane.showMessageDialog(null, "Mensaje con INFORMATION_MESSAGE o 1", "Javadesde0.com", 1);
JOptionPane.showMessageDialog(null, "Mensaje con WARNING_MESSAGE o 2", "Javadesde0.com", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(null, "Mensaje con QUESTION_MESSAGE o 3", "Javadesde0.com", JOptionPane.QUESTION_MESSAGE);
}
}
view raw.java hosted with ❤ by GitHub

El resultado, sería el siguiente:

Método JOptionPane.showInputDialog()

ShowInputDialog, nos permite realizar una entrada de datos de forma gráfica.

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String msg = JOptionPane.showInputDialog(null, "Introduce un mensaje");
System.out.println(msg);
}
}
view raw.java hosted with ❤ by GitHub

Guardaremos el valor introducido en el ShowInputDialog en un String, como se suele hacer con el Scanner de la consola. Para finalmente, mostrarlo por consola. El resultado, sería el siguiente:

Método JOptionPane.ConfirmDialog()

ConfirmDialog, nos permite realizar ventanas con múltiples opciones. Una de las más famosas y justamente la que vamos a hacer en el ejemplo es la un mensaje de ¿Desea cerrar la ventana? Y en esta ventana, nos aparecerán tres botones Yes, No y Cancel. Para capturar si se pulsa un botón, guardamos el valor en un int y comprobamos el valor de dicha variable mediante a un IF. Si el valor es 0 se habrá pulsado Yes, si es 1 será No y finalmente, si el valor es 2, será Cancelos. Mostraremos los resultados por consola.

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int ventanaYesNotCancel = JOptionPane.showConfirmDialog(null, "¿Quieres salir del programa?", "Javadesde0.com", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
//0=yes, 1=no, 2=cancel
if(ventanaYesNotCancel == 0) {
System.out.println("Has pulsado Yes");
}else if(ventanaYesNotCancel == 1){
System.out.println("Has pulsado No");
}else if(ventanaYesNotCancel == 2){
System.out.println("Has pulsado Cancel");
}
}
}
view raw.java hosted with ❤ by GitHub

El resultado, sería el siguiente:

Método JOptionPane.showOptionDialog()

showOptionDialog(), como ya habíamos dicho antes de empezar a hablar de los métodos, engloba los 3 métodos de arriba. Por tanto, podemos hacer cosas similares a las anteriores. En este ejemplo que vamos a realizar, crearemos una ventana de dialogo que mostrará 4 botones a partir de un array. Al pulsar cualquiera de los botones, mostrará el mensaje por la consola.

import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String[] botones = {"Boton A", "Boton B", "Boton C", "Boton D"};
int ventana = JOptionPane.showOptionDialog(null,
"Pulsa un boton:",
"Javadesde0.com",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null,
botones, botones[0]);
if(ventana == 0) {System.out.println("Opcion A");}
else if(ventana == 1) {System.out.println("Boton B");}
else if(ventana == 2) {System.out.println("Boton C");}
else if(ventana == 3) {System.out.println("Boton D");}
}
}
view raw.java hosted with ❤ by GitHub

El resultado, sería el siguiente:

Ventajas y desventajas de JOptionPane

Ventanjas de JOptionPane:

  • Simple.
  • Flexible.
  • Rápido.
  • No requiere grandes conocimientos de interfaces para su uso.

Desventajas de JOptionPane:

  • Se crea mediante a métodos estáticos, por eso, no hace falta instanciar nada.
  • No es muy potente, solamente muestra mensajes de diálogos simples. Si queremos realizar diálogos más complejos, es donde entraría en juego Jframe, del que hablaremos más adelante.

Comentarios

Entradas populares de este blog

Ejercicios para aprender AutoCAD 3D

Piezas 3D - interesantes

Cómo instalar una fuente de alimentación