Você está na página 1de 13

Mensajes de dialogo en Java con JOptionPane

Existen varias formas de hacer distintos tipos de cuadros de dilogo, comenzaremos a verlos
uno por uno para no romper con el esquema de trabajo, los cuadros de dialogo que veremos
en este post estarn basados en el objeto JOptionPane, un objeto de java que nos permite
precisamente trabajar con cuadros de dialog, los mtodos de este objeto que veremos, sern
los siguientes:

showMessageDialog
showInputDialog
showConfirmDialog
showOptionDialog

De antemano les comento que la entrada la ir actualizando hasta terminarla, pero por lo
pronto ya tenemos algo con que comenzar:

showMessageDialog
Ok, para probar est mtodo, lo nico que haremos ser crear una clase con un mtodo main,
vamos a suponer que la clase se llama, MessageDialog:

1 public class MessageDialog {

3 public static void main(String[] args) {

5 }

6}

Bien, fcil, ahora, vamos a jugar un poco con esto, para acceder a este mtodo simplemente
tenemos que importar la clase JOptionPane, aunque normalmente netbeans lo hace por
nosotros pondr la lnea de cdigo por cualquier cosa:

1 import javax.swing.JOptionPane;

1
Instructor: Paul Delgado Soto
Una vez importado lo nico que tenemos que hacer es teclear el nombre de la clase ms el
mtodo que queremos utilizar, teniendo en cuenta una cosa, el mtodo showMessageDialog
tiene 3 sobrecargas del mtodo, uno que recibe 2 parametros, otro de 4, y otro de 5, vamos a
ver uno por uno para observar como vamos personalizando cada vez ms nuestro mensaje, el
primero que veremos es el de dos parametros:

1 public class MessageDialog {

3 public static void main(String[] args) {

4 JOptionPane.showMessageDialog(null, "Operacin realizada correctamente");

5 }

7}

Bien, explicacin rpida, el primer parmetro, representa el componente padre sobre el cual el
mensaje se mostrar, si nosotros no le enviamos ninguno, como en este caso lo estamos
haciendo, simplemente mostrar una ventana similiar a la siguiente:

Si nosotros le enviamos un componente, se


colocar encima de el, sin ninguna variacin en el funcionamiento, el segundo parmetro
obviamente, es el mensaje que queremos observar, y listo, un mensaje fcil de hacer, bien,
ahora veamos otra cosa, el anterior fue el mtodo con dos parmetros, ahora bien, cuando
utilizamos el mtodo de cuatro parmetros tenemos un poco ms de personalizacin, veamos:

JOptionPane.showMessageDialog(null, "Mensaje dentro de la ventana", "Mensaje en la


1
barra de titulo", JOptionPane.WARNING_MESSAGE);

El funcionamiento de este mtodo es un poco diferente, pero ms til:

Primer Parmetro: El componente padre sobre el cual se mostrar la ventana de


dialogo.
Segundo Parmetro: El mensaje que se mostrar dentro de la ventana.

2
Instructor: Paul Delgado Soto
Tercer Parmetro: El mensaje que se mostrar en la barra de titulo.
Cuarto Parmetro: Una variable Int contenida por JOptionPane, que representa el
icono que se mostrar en la ventana, algunos de los valores posibles
son: INFORMATION_MESSAGE , WARNING_MESSAGE , QUESTION_MESSAGE ,
PLAIN_MESSAGE, ERROR_MESSAGE

En el caso anterior, el mensaje se vera de esta manera:

Como ven, los textos corresponden a los


mensajes que se muestran, y al usar un WARNING_MESSAGE se presenta con un icono de
alerta. Ahora bien, para el ltimo mtodo, vamos a necesitar crear un icono personalizado,
para esto, yo me e descargado una imagen de 5050 que se llama icon-pencil-png.png y la e
colocado en un paquete llamado resources dentro de mi proyecto, lo siguiente, ser crear un
icono, para esto, vamos a crear una clase llamada MyIcon que implemente la interfaz Icon, el
contenido de la clase ser el siguiente:

1 import java.awt.Component;

2 import java.awt.Graphics;

3 import java.awt.Image;

4 import javax.swing.Icon;

5 import javax.swing.ImageIcon;

7 public class MyIcon implements Icon{

9 @Override
10 public void paintIcon(Component c, Graphics g, int x, int y) {
11 Image image = new ImageIcon(getClass().getResource("/resources/icon-pencil-
12 png.png")).getImage();

13 g.drawImage(image, x, y, c);

14 }

15

3
Instructor: Paul Delgado Soto
16 @Override

17 public int getIconWidth() {

18 return 50;

19 }

20

21 @Override

22 public int getIconHeight() {

23 return 50;

24 }

25

Listo, con esto tendremos nuestro icono, ya se, tanto rollo para un icono, pero bueno, somos
programadores, ahora bien, necesitaremos, antes de mostrar nuestro mensaje de dialogo,
crear una instancia de esta clase, y posteriormente, podremos utilizar el mtodo de 5
parametros:

MyIcon icon = new MyIcon();


1
JOptionPane.showMessageDialog(null, "Mensaje dentro de la ventana", "Titulo",
2
JOptionPane.DEFAULT_OPTION, icon);

Si se dan cuenta, los parmetros son idnticos a los parmetros que se la pasan al mtodo de
cuatro parmetros, solo que esta vez, existe un quinto parmetro, que nos permite enviar un
icono, proporcionando un resultado similar al siguiente:

Y listo, tenemos una manera coqueta de hacer

mensajes de alerta con el showMessageDialog

showInputDialog

4
Instructor: Paul Delgado Soto
Bien, para trabajar con el showInputDialog, vamos a crear nuevamente una clase a la cual le
llame InputDialog nuevamente con un mtodo main:

1 public class InputDialog {

2 public static void main(String[] args) {

4 }

5}

Bien, de antemano les digo que nuevamente necesitaremos el import, as que despues de
agregarlo comenzaremos a trabajar, y esta vez lo haremos ms rpido ya que despues de leer
la primera parte, habrn comprendido como est la dinmica de los dialogos. El inputDialog
contiene 6 sobrecargas del mtodo, los cuales tienen los siguientes parametros y ojo, TODOS
(Con excepcin del ultimo) devuelven un String:

Mtodo 1:

1 JOptionPane.showInputDialog(Mensaje);

Explicacin: Bueno, este es el mtodo ms sencillo, slo requiere de un parmetro, y este es el


mensaje que va a mostrar, como les comente en un principio, la mayoria de los InputDialog
devuelven un String, por consecuente, su utilizacin sera la siguiente:

1 String respuesta = JOptionPane.showInputDialog("Escribe tu nombre");

De esta manera, tendramos un resultado como:

5
Instructor: Paul Delgado Soto
Mtodo 2:

1 JOptionPane.showInputDialog(Mensaje, Texto Inicial);

Explicacion: Nuevamente el mtodo es sumamente sencillo, dado que su utilizacin quedara


de esta manera:

1 String respuesta = JOptionPane.showInputDialog("Cual es su nombre?", "atxy2k");

Quedando el resultado de esta manera:

Mtodo 3:

1 JOptionPane.showInputDialog(Componente padre, Mensaje);

Explicacion: Este mtodo es muy similar al primero, la nica diferencia es que este nos permite
ubicar el InputDialog sobre un componente, en este caso su utilizacin sera solo remplazar el
primer parametro por el componente o null si no existe un componente:

1 String respuesta = JOptionPane.showInputDialog(null, "Escribe tu nombre");

6
Instructor: Paul Delgado Soto
El resultado sera el mismo que el del mtodo 1:

Mtodo 4:

1 JOptionPane.showInputDialog(Componente padre, Mensaje, Texto Inicial);

Explicacin: Este mtodo es muy similar al anterior, muy sencillo de entender, el padre, el
mensaje que dir el cuadro de dialogo y por ltimo, un texto por defecto, con un uso como el
siguiente:

1 JOptionPane.showinputDialog(null, "Cual es su nombre?", "atxy2k");

Nos proporcionar un resultado similar al del mtodo 2:

Mtodo 5:

JOptionPane.showInputDialog(Componente padre, Mensaje, Titulo, Tipo De Mensaje


1
(WARNING,ERROR,ETC.) );

Explicacin: Este mtodo es algo diferente a los anteriores, aunque tambin incluye el padre,
el segundo parmetro representar el texto del cuadro de texto y el tercero el ttulo de la
ventana, por ultimo, tenemos la posibilidad de enviar un parmetro tal y como lo hicimos en el
showMessageDialog para seleccionar un icono por defecto, un ejemplo de uso sera:

7
Instructor: Paul Delgado Soto
String respuesta = JOptionPane.showInputDialog(null, "Escriba nuevamente su nombre",
1
"Error!", JOptionPane.ERROR_MESSAGE);

Dando un resultado como el siguiente:

Mtodo 6:

JOptionPane.showInputDialog(Componente padre, Mensaje, Titulo, Tipo De Mensaje,


1
Icono, Arreglo de opciones, Seleccion por defecto );

Explicacin: Este es mi favorito, este mtodo tiene algo en particular independientemente de


las opciones por default, y es que, pasandole como parametro un arreglo de objetos, que
tambin podemos hacer con los mtodos anteriores, este mtodo genera un JComboBox para
mostrar las posibles selecciones, es algo que me gusta, y encima de todo, nos permite pasar un
icono, por ejemplo, voy a utilizar el icono que hicimos anteriormente para el mismo ejemplo:

1 String[] carreras = {

2 "Ingeniera en sistemas computacionales",

3 "Ingeniera industrial",

4 "Ingeniera en mecatrnica",

5 "Ingeniera en informatica",

6 "Ingeniera petroqumica"

7 };

8 MyIcon icon = new MyIcon();

8
Instructor: Paul Delgado Soto
9 String resp = (String) JOptionPane.showInputDialog(null, "Seleccione una carrera a
cursar", "Carrera", JOptionPane.DEFAULT_OPTION, icon, carreras, carreras[0]);

Con este pequeo cdigo, tendramos un resultado muy similar al siguiente:

Excelente presentacin para un

cuadro de dialogo

showConfirmDialog
Una vez que hemos dominado los mtodos anteriores, utilizar un showConfirmDialog es super
sencillo, este, cuenta con cuatro sobrecargas del mtodo, y los veremos de manera super
rpida, para esto hagamos una clase con cualquier nombre (en mi caso showConfirmDialog) y
pongamosle un mtodo main para comenzar a trabajar, y veamos como funcionan estos
mtodos:

Mtodo 1:

1 JOptionPane.showConfirmDialog(Componente padre, "Mensaje");

Este es muy sencillo, el componente padre pues como anteriormente mencionamos es aquel
sobre el cual se mostrar el mensaje, y el mensaje es lo que dir el mensaje, como es un
dialogo de confirmacin, este, por default mostrar las opciones si, no y cancelar, y devolver
un entero con la opcin seleccionada como si estuvieramos en un vector, es decir, si
seleccionamos si retornar un cero, si es no un 1 y si es cancelar un 2, por ejemplo:

1 int resp = JOptionPane.showConfirmDialog(null, "Est seguro?");

9
Instructor: Paul Delgado Soto
De esta manera tendramos un resultado como el siguiente:

Mtodo 2:

JOptionPane.showConfirmDialog(Componente padre, "Mensaje", "Titulo","Tipo de


1
seleccion");

Este componente es un poco mas completo, las primeras dos opciones son las mismas que el
mtodo anterior, pero agregamos tal y como antes el titulo de la ventana, y un parmetro
nuevo, el tipo de seleccin, es decir, que tipo de dialogo ser, si es un dialogo de si y no, o si
tiene las opciones si, no y cancelar por defecto, por ejemplo:

int resp = JOptionPane.showConfirmDialog(null, "Esta seguro?", "Alerta!",


1
JOptionPane.YES_NO_OPTION);

Los posibles valores son YES_NO_OPTION o


YES_NO_CANCEL_OPTION, sencillitos.

Mtodo 3:

JOptionPane.showConfirmDialog(Componente padre, "Mensaje", "titulo", "tipo de


1
seleccion", "tipo de mensaje");

10
Instructor: Paul Delgado Soto
Bueno, este mtodo es identico al anterior, solo que se le agrega el tipo de mensaje para que
nos reconozca un icono por defecto, tal y como lo hicimos con el InputDialog y el
MessageDialog, por ejemplo:

int resp = JOptionPane.showConfirmDialog(null, "Esta seguro?", "Alerta!",


1
JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE);

Teniendo un resultado como el siguiente, como pueden ver, las variables que utilizamos en los
mtodos del JOptionPane siempre son casi las mismas, si estan siguiente este tutorial paso a
paso, a este punto ya lo deben estar viendo super fcil, el cdigo del mtodo anterior sera el

siguiente:

Mtodo 4:

JOptionPane.showConfirmDialog(Componente padre, "Mensaje", "titulo", "tipo de


1
seleccion", "tipo de mensaje");

Y el que nos faltaba, el mtodo al cual podemos pasarle un icono personalizado simplemente
por esttica, veamos un ejemplo con el mismo icono que programamos al principio:

MyIcon icon = new MyIcon();


1
int resp = JOptionPane.showConfirmDialog(null, "Esta seguro?", "Alerta!",
2
JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, icon);

11
Instructor: Paul Delgado Soto
Teniendo un resultado muy similar a los anteriores y funcionando igual que todos los

showConfirmDialog como pueden observar:

showOptionDialog
El mtodo anterior, nos enseo una manera de darle a escoger al usuario mas de una opcin
en una ventana de dialogo, como una manera ms personalizada de hacer esto, podemos
utilizar el mtodo showOptionDialog que nos proporciona JOptionPane, este mtodo no tiene
sobrecarga y cuenta con los siguientes parmetros.

JOptionPane.showOptionDialog(padre, mensaje, titulo, tipo de seleccion, tipo de mensaje,


1
icono, opciones, valor inicial);

Los nicos que hay que dejar en claro despus de leer este post son el tipo de seleccin, que
utilizamos un tipo de seleccion como el del showConfirmDialog, el tipo de mensaje que ya
sabemos cual es, y las opciones, que es un arreglo con las opciones que se le mostraran al
usuario y por ultimo, el valor por default, cabe destacar, que este mtodo, devuelve un valor
en int del valor que haya seleccionado el usuario, veamos un ejemplo de esto:

MyIcon icon = new MyIcon();


1
String[] options = {"Opcion A", "Opcion B", "Opcion C", "Opcion D"};
2
int seleccion = JOptionPane.showOptionDialog(null, "Es necesario que seleccione una
3 opcion", "Titulo", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, icon,
options, options[0]);

Ok explicacin, el icono sabemos que es de la clase que anteriormente utilizamos, el arreglo de


opciones son las que se van a mostrar en la ventana, el primer parametro que le mando es
null, precisamente por que lo estoy corriendo en una clase con mtodo main sin JFrame y no
hay componente padre, posteriormente envo el mensaje que quiero que aparezca dentro del
cuadro de dialogo, luego el titulo, luego le mando un DEFAULT_OPTION solo para que trate al
cuadro de dialogo como un cuadro normal, un QUESTION_MESSAGE que en realidad no tiene
sentido a menos que en el icono enviemos null, por tanto, no tiene caso el parmetro, luego

12
Instructor: Paul Delgado Soto
paso el icono personalizado que quiero que tenga mi mensaje de dialogo, el arreglo de
opciones y la opcin por defecto, el cual, me dara un resultado como el siguiente:

Teniendo en cuenta lo anterior, esto


significa, que si selecciono la opcion C por ejemplo, el valor entero que me devolver el
mtodo ser 2, por que es la posicin 2 del arreglo que enviamos como parmetro, y lo mismo
con las otras opciones. Como vern, es muy sencillo crear cuadros de dialogo en Java, solo hay
que conocer esta pequea clase, posteriormente, blogueare algo ms llamativo, como crear
cuadros de dialogo personalizados con la clase JDialog de Java, para esto, dedicar una entrada
completa, espero les sea de ayuda. Saludos.

13
Instructor: Paul Delgado Soto

Você também pode gostar