Un cuadro de diálogo no es más que una ventana que nos permite mostrar mensajes, por ejemplo de error, de advertencia o de información, o para pedir el ingreso de un valor, además nos permite solicitar al usuario su intervención para decidir si se realizará o no una acción, como ser los mensajes de confirmación.
JOptionPane es una clase de la biblioteca Swing (que contiene las librerías de interfaz gráfica de usuario), para poder usar sus métodos es necesario importarla: import javax.swing.JOptionPane;
Podemos mencionar que JOptionPane tiene básicamente 4 métodos, que definen la manera y la funcionalidad con la que se mostrará un cuadro de diálogo:
showMessageDialog(): muestra un cuadro de diálogo al usuario, normalmente de carácter informativo, como mínimo recibe 2 parámetros: el componente padre (que puede ser null) y una cadena de caracteres que corresponde al mensaje a ser mostrado. También puede recibir como parámetro una cadena que irá como título del cuadro y el tipo de mensaje a mostrarse (determinado por una constante de la clase JOptionPane).
Parámetros:* Component componentePadre: el componente al que pertenece.
* Object mensaje = es el objeto que corresponde al mensaje (texto) a mostrarse.
* String titulo = texto que será el título del cuadro de diálogo.
* int tipoDeMensaje = definido por una constante de la clase JOptionPane
Sintaxis:
JOptionPane.showMessageDialog(this, "Este es un mensaje simple");
Aquí se le envía como componente padre el objecto actual; es interesante esta práctica ya que de esta manera el formulario se bloqueará mientras esté abierto el cuadro de mensaje, impidiendo que se efectúen otras acciones, en cambio si se le pasa null en vez de un objeto el formulario (padre) al que pertenece estará disponible para otras acciones (lo que estaría incorrecto).
Resultado:Sintaxis:
JOptionPane.showMessageDialog(this, "Este es un mensaje detallado", "éxito!", JOptionPane.INFORMATION_MESSAGE);
Como se puede ver, lo diferente está en que se le pasan dos argumentos más a parte del componente padre y del mensaje a mostrarse, el tercer parámetro es lo que se situará como título del cuadro de diálogo y el último parámetro es la constante que define el tipo de mensaje a ser mostrado.
Resultado:
Ejemplos
showOptionDialog(): podríamos decir que gracias a este método podemos obtener un cuadro de diálogo ajustado a nuestra necesidad, ya que es totalmente configurable.
Parámetros:
* componentePadre = el objeto que indica de qué componente es hijo.
* objetoMensaje = un String que corresponde al texto a mostrarse como mensaje.
* Titulo = String que se establecerá como titulo de la ventana.
* TipoDeOpcion = es un entero, representado por unas constantes que definen qué opciones tendrá el cuadro de diálogo. Puede ser: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, YES_CANCEL_OPTION.
* TipoDeMensaje: entero que determina el tipo de mensaje (ERROR_MESSAGE, por ejemplo).
* Icono = la imagen que acompañará al mensaje, si no se especifica (es decir, se pasa null) se establecerá uno por defecto de acuerdo al tipoDeMensaje.
* Opciones = un array tipo Object que indica las opciones posibles, normalmente debe ser coherente con el tipoDeOpcion elejido.
* ValorInicial = es la opción predeterminada, deberá ser una de las opciones introducidas en el array de opciones. Puede ser null.
Ejemplo:
- Sintaxis:
showInputDialog(): sirve para mostrar una ventana que permita ingresar datos (una cadena, texto, números, etc.). Los parámetros que puede recibir son los mismos que los del MessagaDialog. * objetoMensaje = un String que corresponde al texto a mostrarse como mensaje.
* Titulo = String que se establecerá como titulo de la ventana.
* TipoDeOpcion = es un entero, representado por unas constantes que definen qué opciones tendrá el cuadro de diálogo. Puede ser: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, YES_CANCEL_OPTION.
* TipoDeMensaje: entero que determina el tipo de mensaje (ERROR_MESSAGE, por ejemplo).
* Icono = la imagen que acompañará al mensaje, si no se especifica (es decir, se pasa null) se establecerá uno por defecto de acuerdo al tipoDeMensaje.
* Opciones = un array tipo Object que indica las opciones posibles, normalmente debe ser coherente con el tipoDeOpcion elejido.
* ValorInicial = es la opción predeterminada, deberá ser una de las opciones introducidas en el array de opciones. Puede ser null.
Ejemplo:
- Sintaxis:
int seleccion = JOptionPane.showOptionDialog(btn_Option, "Este es un cuadro de dialogo Option", "showOptionDialog", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] {"Si", "No","Cancelar"}, "Si");
Retorna un entero que corresponde a la opción seleccionada por el usuario, como sabrán, el valor del entero corresponde a la posición que ocupa la opción en el array es decir si se selecciona "No" devolverá 1 (uno) , ya que la primera posición de un array es 0 (cero).
- Resultado:
Ejemplo:
- Sintaxis:
String texto = JOptionPane.showInputDialog (this, "Ingrese un texto: ", "showInputDialog",JOptionPane.INFORMATION_MESSAGE);
- Resultado:
Nota: Cuando lo que se va a ingresar es un número, se debe realizar una conversión para poder utilizarlo como tal. Por ejemplo: int numero = Integer.parseInt(JOptionPane.showInputDialog (this, "Ingrese un número: ", "showInputDialog",JOptionPane.INFORMATION_MESSAGE)); Pero ésto debemos controlar que se escriban sólo número para que no arroje errores en la conversión, podríamos solucionar tan sólo encerrándolo en un try-catch
showCofirmDialog(): método que nos sirve para solicitar al usuario la confirmación de una determinada acción. Puede establecerse los distintos parámetros antes mencionados, como por ejemplo el componente padre, mensaje, titulo y tipo de mensaje. Para el tipo de mensaje las constantes posibles son: YES_NO_OPTION, YES_NO_CANCEL_OPCION, YES_OPTION, NO_OPTION, CANCEL_OPTION
Ejemplo:
- Sintaxis:
int opcion = JOptionPane.showConfirmDialog(this, "Desea seguir ejecutando la aplicación?", "Seleccione una opción", JOptionPane.YES_NO_OPTION);
- Resultado:
Retorna un entero que corresponde a la opción seleccionada por el usuario.
Hasta aquí, se puede hacer uso de todas las funcionalidades que nos facilita la clase JOptionPane, además de darle un toque más elegante a nuestro programa.
chevere brother te pasastes
ResponderEliminarmuy buena explicación... gracias
ResponderEliminarGracias a ustedes!
ResponderEliminarGracias me fue de mucha ayuda
ResponderEliminarGracias amigo n.n
ResponderEliminarbn bn :)
ResponderEliminarGRACIAS MAN ME ACLARO MUCHAS COSITAS QUE NO SABIA RECIEN LO PRACTICO ESTE ME LO ENTANS ENSEÑAMDO PERO POR DESCUIDO NO LE TOME ATENCIO Y AHORA SI QUE ENTENDI CHEVERE MAN SALUDOS DE PERULANDIA JEJEJE :)
ResponderEliminarCualquier pregunta o duda, sobre el tema u otro de su interés, será bienvenida!
ResponderEliminarSaludos...
Ey tienes un pdf con informacion sobre como crear ventans etec...?? es que hasta ahora he trabajado en Eclipse obteniendo resultados por consola... como paso al sgte nivel?
ResponderEliminarTengo un problema con un JOptionPane.showMessageDialog le mando un error, pero al mostrarlo en la aplicación, cuando verdaderamente sale el error, éste cuadro de diálogo se desaparece inmediatamente, no deja ver qué error es, obviamente el msj menos. Muchas gracias por su respuesta. Saludos!
ResponderEliminarJorge Félix, voy a buscar algo que pueda pasarte. En todo caso, puedes leer a cerca de JFrame. En realidad existen muchos tipos de "ventanas", pero el JFrame y el JDialog son los principales. Voy a crear una entrada sobre este tema en estos días!
ResponderEliminarAnónimo, si puedes compartir la fracción de tu código con el que estas teniendo inconvenientes va a ayudar a saber dónde está el error. Por defecto, los cuadros de mensaje siempre esperan la interacción del usuario.
ResponderEliminarpara poner el nombre en mayusculas , q codigo debo acceder depsues del JOptionPane.showInputDialog ?
ResponderEliminarpara que sirve este componente en netbeans JOptionPane.showInternalinput
ResponderEliminargracias buen aporte
Genial ! bastante sencillo y útil :) Lo bueno es que he usado estos cuadros de dialogo en java para trabajar con cosas como los arreglos de objetos y demás sin hacer uso del Jpanel. Saludos.
ResponderEliminarBuenas Noches quisiera saber si me podriaas ayudar a insertar imagenes en los cuadros de dialogos con eel JOptaine
ResponderEliminarGRACIAS ME SIRVIO ESTA INFORMACION MUY INTERESANTE
ResponderEliminarGraciasss!!! :)
ResponderEliminarGenial! me encararon hacer 30 programas con JOptionPane, la verdad es que me sirvio mucho pero...¿puedo hacer con JOptionPane una ventana donde un usuarioingrese su contraseña y su usuario?
ResponderEliminaren que libro puedo encontrar la informacion de JOptiónPane
ResponderEliminaren que libro puedo encontrar la informacion de JOptiónPane
ResponderEliminarHooola :3
ResponderEliminarSomos muy buenas en esto *u*
Att: Gabi y Lore :3
Me Has Salvado! No Entendía Mucho De JOptionPane, Estoy Iniciandome En Esto Y Me Han Dejado Investigar Para Que Es import javax.swing.JOptionPane;
ResponderEliminarNo Eh Logrado Encontrarlo Pero Muy Buena Tu Página.
como puedo hacer para ajustar el texto de un joptionpane ya que es bastante largo y lo que hace es que se alarga horizontalmente en la pantalla pero no hace salto de line
ResponderEliminarmuchas gracias pero me queda la duda de como regresar al menú anterior seleccionando estas opciones.
ResponderEliminarUna consulta cual es la diferencia entre:
ResponderEliminarJOptionPane.showMessageDialog(this,"cuadro de mensaje");
JOptionPane.showMessageDialog(null,"cuadro de mensaje");
JOptionPane.showMessageDialog(rootPane,"cuadro de mensaje");
¿En los 3 casos sale el mensaje pero como saber cual es el correcto y cuando usarlo?
Perfecto estos consejos si me funcionaron
ResponderEliminarexcelente aporte!!
ResponderEliminarmuchas gracias por el aporte, excelente.
ResponderEliminarMuchas gracias...
ResponderEliminarse paso wey
ResponderEliminar