La clase JOptionPane es una clase que hereda de JComponent. Ésta clase nos permitirá crear alertas o cuadros de diálogos simples para poder solicitar, o mostrar, información al usuario.
Los métodos que revisaremos en este pequeño tutorías serán:
- JOptionPane.showMessageDialog(…)
- JOptionPane.showConfirmDialog(….);
- JOptionPane.showInputDialog(…);
- JOptionPane.showOptionDialog(…);
Cada uno de estos métodos presenta una particularidad distinta pero todos ellos nos muestran una ventanita pop up que nos permitirá captar información del usuario.
- showMessageDialog
JOptionPane. showMessageDialog (Component componentePadre, Object mensaje, String titulo, int tipoDeMensaje)
Nos sirve para mostrar información, por ejemplo alguna alerta que queremos hacerle al usuario. Veamos cuales son los principales argumentos del método.
componentePadre: es por el ejemplo el Frame desde el cual lo llamamos. Si queremos lo podemos poner en null, que es mas o menos lo mismo.
Mensaje: es lo que queremos que diga el cuadro de dialogo.
Titulo: el titulo.
tipoDeMensaje: son constantes que le dirán a java que tipo de mensaje queremos mostrar. De acuerdo a esto seran los iconos que se mostraran en el cuadro de dialogo. Las opciones son
- ERROR_MESSAGE
- INFORMATION_MESSAGE
- WARNING_MESSAGE
- QUESTION_MESSAGE
- PLAIN_MESSAGE
Si quisiéramos mostrar un icono personalizado, podemos agregarlo al final como un argumento más.
Ejemplo:
JOptionPane.showMessageDialog(null,"Acceso Denegado","Error",
JOptionPane.ERROR_MESSAGE);
- showConfirmDialog
Éste método sirve para pedirle al usuario una confirmación. Por ejemplo una confirmación de salida del sistema
Int respuesta =JOptionPane. showMessageDialog (Component componentePadre, Object mensaje, String titulo, int tipoDeOpcion);
El anterior es la versión corta del los argumentos del método. La versión larga incluye el tipo de mensaje y el icono, por si queremos personalizarlo.
Los argumentos son idénticos a los del método anterior. Excepto por el tipo de opción, que es otra constante y los valores pueden ser:
- DEFAULT_OPTION
- YES_NO_OPTION
- YES_NO_CANCEL_OPTION
- OK_CANCEL_OPTION
Como vemos el método devuelve una un entero que nos permitirá captar cual es la opción elegida por el usuario. Los valores serán 0 para Si, 1 para No, 2 para Cancelar y -1 para el cierre de la ventana. Así podremos preguntar cual es el valor devuelto y realizar la acción que deseamos.
Ejemplo
int i =JOptionPane.showConfirmDialog(this,"¿Realmente Desea Salir de Hola Swing?","Confirmar Salida",JOptionPane.YES_NO_OPTION);
if(i= =0){
System.exit(0);
}
- ShowInputDialog
Este método nos muestra una ventana donde podremos insertar una String. Por ejemplo cuando queremos que el usuario inserte su nombre. La versión corta del método es
String respuesta = JOptionPane.showInputDialog(Object mensaje)
Este método devolverá una String para poderla utilizar después. La versión larga de los argumentos del método es similar a los anteriores.
Ejemplo:
String nombre =JOptionPane.showInputDialog("Inserte su Nombre");
this.lbl_nombre.setText(nombre);
También podemos crear un cuadro de dialogo que contenga un combo con las opciones predeterminadas que le queremos dar al usuario.
Ejem:
Object[] valoresPocibles = {"Pedro", "Juan", "Carlos" };
Object jefe = JOptionPane.showInputDialog(null,
"Seleccione cual es su Jefe Inmediato", "Seleccionar Jefe",
JOptionPane. QUESTION_MESSAGE, null,
valoresPocibles, valoresPocibles[0]);
this.lbl_jefe.setText((String)jefe);
El array de valores posibles nos muestra en un combo cuales serán los jefes que podemos mostrar. El último argumento del método nos muestra cual será la opción seleccionada por defecto
showOptionDialog
Con este método podemos crear cuadros de diálogos con botones personalizados. Esta bueno para darle un toque personal a los cuadros de dialogo
El método tiene la forma:
Int res = JOptionPane.showOptionDialog(Component componentePadre, Object mensaje, String titulo, int tipoDeOpcion, int tipoMensaje, Icon icono, Object[] botones, Object botonDefault)
Aquí lo único que varia con el resto es el array de botones que vamos a tener, debemos destacar que no hace falta que creemos botones, solo tenemos que poner cual será el texto que saldrá en el.
Object[] botones = {"Si dale va a estar bueno", "No?... buuu" };
int i=JOptionPane.showOptionDialog(null, "¿Queres salir a Bailar esta Noche?", "Sita",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, botones, botones[0]);
System.out.println(i);
Después podemos tomar la respuesta como lo hacíamos con el confirmDialog.
Bueno hasta la próxima, esto es lo más importante en los mensajes o alertas.
26 comentarios:
Perfecto, justo lo que necesitaba y bien explicado. Pero... te falto mencionar que para poder utilizar estas opciones hay primero que llamar a... la librería o clase.
import javax.swing.JOptionPane;
Lo digo yo que soy nuevo.
Sep. Se da por entendido. Perdón.
Siempre que uses una clase la tenés que importar primero. No tiene nada de malo ser nuevo, por algun lado se comienza y siempre somos nuevos, por que siempre hay algo para aprender.
Espero haberte sido de ayuda. Saludos.
Muchas gracias amigo por esta valiosisima información, la estaba buscando desde hace rato!!!
Salu2
de nada amigo! un abrazo
muy util, gracias
;)
Solo tengo una duda. Para declarale a un boton el valor, por ejemplo, 0 para Si , 1 para No, y -1 para Cancelar, eso como c hace. Gracias d antemano.
Saludos! hay alguna forma de cambiar el nombre de la ventana de un showInputdialog? es para que no aparezca siempre la ventana con el nombre Input, Gracias
Saludos! Muy bien explicado!
buena la explicacion yo estoy haciendo uso de tu explicacion
me gustria poder intercambiar temas relacionados mi correo es alejandro_jhong@hotmail.com me gustarai saber mas de swing
gracias..
Excelente!! muy bien explicado, me ha servido de mucho.
Saludos
thx Ana :)
Gracias BRO!!! me sirvió de mucho
u r welcome! me alegro de que el aporte te haya servido! saludos
hay alguna forma de mostrar una ventana de ese tipo pero que en vez de que tenga botones para aceptar o cancelar o esas cosas, desaparezca despues de no se 5 segundos me urge muchas gracias por la respuesta
ese tipo de comportamiento, lo tendria una venta que tu mismo hicieras, existen por ahi codigo de todo tipo de ventanas, con o sin bordes, con botones, etc. Lo de que desaparezca seria un timer que dispare el evento. Saludos
Muchas gracias por la informacion. Muy claro todo!!! :)
you are welcome! :)
Gracias por el aporte .... :D
You are un groso!
No estoy de acuerdo con tu top pero en fin un hobbie hecho profesión es lo mejor por otro lado para anónimo te dejo un código para poder hacer lo que pides:
int n = JOptionPane.showConfirmDialog(this, "¿Realmente Desea Salir de Hola Swing?", "Confirmar Salida", JOptionPane.YES_NO_OPTION);
// YES OPTION CLICKED
if (n == 0) {
System.out.println("YES Clicked");
}
// NO OPTION CLICKED
if (n == 1) {
System.out.println("NO Clicked");
}
// CROSS CLICKED
if (n == -1) {
System.out.println("Cross Clicked");
}
PSD:
Me sirvió lo de los íconos Gracias y BENDICIONES!!!!
Ja, puede ser... hay dias en los que los siento asi... y otros no tanto jej. Un abrazo y a seguir codificando :)
Genial che, muchas gracias
Gracias... Me sirvio de mucho... :D
Muy bueno
Publicar un comentario