Ejemplo JOptionPane

Publicado el 22 diciembre 2013 por Cristian David Henao Hoyos @chenaooo
Nuevamente después de otra semana muy pesada sin poder darle vuelta al Blog, regreso para finalizar la secuencia de entradas sobre Java Swing (Al menos la secuencia plasmada en este post). En esta ocasión trabajaremos uno de los componentes mas básicos pero no por ello menos importantes, los JOptionPane...

Que Es?

JOptionPane es una Clase que nos provee una serie de ventanas de dialogo predefinidas con el fin de facilitarnos algunos procesos de interacción con el usuario...... esta clase la encontramos en el paquete javax.swing, por eso para poder utilizarla debemos asegurarnos de tener el import correspondiente (import javax.swing.JOptionPane;)

Para que sirve?


Supongamos que queremos mostrar algún tipo de mensaje al usuario (Información, Advertencia, Error, Confirmación).............. pedir un dato........... o mejor aún, ¿que podríamos hacer para que nuestro usuario seleccione una o mas opciones para ejecutar algún proceso de nuestra aplicación?................ una buena opción es crear un formulario JDialog y allí poner lo que necesitemos...... simple verdad?.....
Si!!!! pero seria mas simple aún si utilizamos alguno de los métodos de JOptionPane, pues esta clase ya nos provee una ventana que hace eso por nosotros.....veamos....Los JOptionPane.

A continuación veremos los tipos y algunos usos básicos que podemos darle a las ventanas de dialogo creadas a partir de esta clase....

JOptionPane.showMessageDialog.

Tal vez el mas básico y conocido de todos, el método showMessageDialog() nos genera una ventana de dialogo, con la cual podemos presentar al usuario un mensaje simple....
JOptionPane.showMessageDialog(null,"Es un mensaje Simple de Información");

Lo básico es utilizarlo con 2 parámetros, el primero representa la ventana Padre a la que pertenece (para entender esto los invito a leer JFrame y JDialog) o simplemente dejarlo en "Null" para que sea común en toda la aplicación, el segundo parámetro es el mensaje que queremos presentar....El método también tiene algunas variantes, podemos adicional a lo anterior agregarle un titulo a nuestra ventana como también definir cual es el icono o tipo de mensaje que queremos presentar, si es de información, error, advertencia o confirmación, esto lo hacemos gracias a las constantes ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, o PLAIN_MESSAGE...



por ejemplo para la ventana de advertencia tan solo debemos escribir el siguiente código (la diferencia con el anterior es que le adicionamos 2 parámetros mas...)
JOptionPane.showMessageDialog(null, "Este es un mensaje de Advertencia",
"WARNING_MESSAGE", JOptionPane.WARNING_MESSAGE);

Cabe mencionar que estas variantes aplican para cualquiera de los métodos que vamos a trabajar..... por ejemplo para la ventana de advertencia te

JOptionPane.showInputDialog.


Este método también es muy conocido y útil cuando lo que queremos es solicitar el ingreso de datos, por defecto presenta una ventana simple similar a las anteriores pero con un campo de texto para ingresar información....... por defecto podemos obtener el dato ingresado mediante un String, sin embargo podemos recibir datos numéricos y posteriormente hacer la conversión.

int numero=Integer.parseInt(JOptionPane.showInputDialog("Ingrese un" +
" numero para multiplicarlo por 2"));
Adicionalmente podemos definir que tipo de opciones mostrar.



El codigo es:
Object color = JOptionPane.showInputDialog(null,"Seleccione Un Color",
"COLORES", JOptionPane.QUESTION_MESSAGE, null,
new Object[] { "Seleccione","Amarillo", "Azul", "Rojo" },"Seleccione");

Como vemos el método también nos brinda la posibilidad de vincular un combo de selección donde definimos el arreglo de opciones y el valor seleccionado por defecto.


JOptionPane.showConfirmDialog.


Este método nos brinda una ventana de confirmación donde por defecto se cargan 3 botones "Si", "No", "Cancelar", es muy útil cuando realizamos operaciones delicadas donde siempre es importante que el usuario confirme, también es muy común encontrarla cuando queremos cerrar sesión o salir de nuestra aplicación por medio de un evento determinado...

int resp=JOptionPane.showConfirmDialog(null,"Usas mucho el JOptionPane?");
if (JOptionPane.OK_OPTION == resp){
System.out.println("Selecciona opción Afirmativa");
}
else{
System.out.println("No selecciona una opción afirmativa");
}

El método retorna un valor entero que corresponde a la opción definida por el usuario....igual que en los ejemplos anteriores, existen variantes que podemos vincular para personalizar nuestro JOptionPane, además de los tipos de iconos o mensajes, también podemos usar las constantes YES_OPTION, NO_OPTION, OK_OPTION, CANCEL_OPTION, CLOSED_OPTION que definen cuales opciones mostrar.

JOptionPane.showOptionDialog.



Este es el ultimo de los métodos que trabajaremos pero el que nos brinda mas opciones de configuración, los métodos anteriores son sobreCargados (Mas adelante se explicará este termino en otra entrada), esto quiere decir que tenemos varios métodos con el mismo nombre pero que reciben distintos parámetros...............el showOptionDialog es un único método que posee todos los parámetros requeridos para su configuración.
JCheckBox chec=new JCheckBox("Prueba");

int seleccion = JOptionPane.showOptionDialog( null,"Seleccione una opcion",
"Selector de opciones",JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,null,// null para icono por defecto.
new Object[] { "opcion 1", "opcion 2", "opcion 3",chec },"opcion 1");

if (seleccion != -1){
System.out.println("seleccionada opcion " + (seleccion + 1));
}
if (chec.isSelected()){
System.out.println("Selecciona el Chec");
}

Con este podemos crear una ventana de dialogo con diferentes opciones definidas en un array de objetos, podemos pasarle diferentes componentes gráficos y el los mostrará sin inconveniente....
Y Listo, básicamente estos son los principales métodos y componentes JOptionPane, con ellos podremos brindar facilidades y ahorrar tiempo en nuestra aplicación, a pesar de estar catalogado como un componente complejo, vemos que su uso es muy pero muy simple.... mas adelante traeré nuevas entradas donde los aplicaremos ;)
También te podría Interesar.
  • Ejemplo JList
  • Ejemplo JFileChooser
  • Ejemplo JTree.  
  • Ejemplo Patrón de Diseño MVC
  • Ejemplo JColorChooser 
  • ¿String Vrs StringBuffer Vrs StringBuilder?
  • Ejemplo Jtable
  • Control de Versiones con Tortoise.
  • Clases en Java 
  • Clases Abstractas


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo.....y si te gustó...... te invito a compartir y
 Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)