domingo, 22 de diciembre de 2013

Ejemplo JOptionPane

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.....

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.


¿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 ;)

77 comentarios:

  1. Hola, estaba buscando exactamente este tipo de explicación con respecto a las ventanas de dialogo de Java. GRACIAS .Buen trabajo

    ResponderEliminar
  2. excelente post, muchas gracias!!

    ResponderEliminar
  3. De primera tu material hermano !!! :D

    ResponderEliminar
  4. Genial tu post, practico y muy directo.

    Gracias!

    ResponderEliminar
  5. ¡Muchas gracias! Me fue y seguirá siendo de mucha ayuda tu información...!

    Estoy empezando en esto de la Programación y la verdad estaba perdido con respecto a esos datos..

    ResponderEliminar
  6. Hola tengo una pregunta. Existen mensajes que no tengan bonotes de aceptar y que se puedan mostrar durante cierto periodo de tiempo. Por ejemplo 30 segundos y se cierre automaticamente de modo que el usuario solo lo lea?

    ResponderEliminar
    Respuestas
    1. Que pena la hora, asumo que ya lo resolviste pero podrias crear tu propia ventana y luego usando hilos le pones el tiempo que quieres que se muestre u oculte.... consulta la secuencia que tengo sobre ese tema, un saludo

      Eliminar
  7. Sabes como usuar el char en JOptionPane Necesito ayuda te lo agradeceria

    ResponderEliminar
  8. Gracias por el aporte, me ayudó mucho =)

    ResponderEliminar
  9. Y si quisiera mostrar un joptionpanel con dos radiobuttons y capturar esa seleccion ?

    ResponderEliminar
  10. Excelente tus aportes Hermano, gracias me has ayudado mucho desde ahora, estare al tanto de tus entradas en el Blog a cada momento!

    ResponderEliminar
  11. NU MA SISIERTO XDdxDxDXdXdxdxDxDXdXdXDxD TENKIU MAI FREN :v

    ResponderEliminar
  12. NU MA SISIERTO XDdxDxDXdXdxdxDxDXdXdXDxD TENKIU MAI FREN :v

    ResponderEliminar
  13. estudio el nivel bachillerato y sinceramente su informacion me ha servido de mucho
    Muchas Gracias!!!!! :)

    ResponderEliminar
  14. Muchas gracias por el aporte, es justo lo que estaba buscando.
    Sigue asi.

    ResponderEliminar
  15. Estoy buscando información para iniciarme en la programación con Java y he enocntrado tu blog que es excelete.
    Te felicito porque tus aportaciones están muy claras y muy didácticas.
    Muchas gracias sigue ayuándonos

    ResponderEliminar
  16. hola, como puedo cambiar los calores de in int?

    ResponderEliminar
  17. FGSSGTSDFSGSDGFAFHAHFDFH

    ResponderEliminar
  18. Muchas gracias por tu ayuda

    ResponderEliminar
  19. Excelente! Muchas gracias, explicas muy bien y al grano.Saludos

    ResponderEliminar
  20. Hola tengo un problema con la enterada de datos,alguien me podría ayudar?

    ResponderEliminar
  21. Hola tengo un problema con la entrada de datos alguien me puede ayudar?

    ResponderEliminar
  22. Hola disculpa que opciones tengo para imprimir un arreglo? con JOptionPane

    ResponderEliminar
  23. Puedo tener varias listas y un botón en un mismo JOptionPane?

    ResponderEliminar
  24. como le pongo color de fondo a los mensajes emergentes????

    ResponderEliminar
  25. Hola, disculpa como puedo hacer para que después de haber elegido una opción, ejecute un cierto codigo, ejemplo: Si escogio el amarillo que ejecute un mensaje que diga el "amarillo es un color primario".

    ResponderEliminar
  26. Respuestas
    1. DHULASDDHYZDFHYUKZDFbvxcnj :)

      Eliminar
    2. lñakfkiahllñaknjlnaijlk.
      >:(

      Eliminar
    3. huaouchqaieryqppqa{qwñiopaw{´sdfyioasc 52uife
      :O ;)
      -jeuiwa

      Eliminar
    4. pvto el que lo lea

      Eliminar
    5. ___
      _/`.-'`.
      _ _/` . _.'
      ..:::::.(_) /` _.'_./
      .oooooooooo\ \o/.-'__.'o.
      .ooooooooo`._\_|_.'`oooooob.
      .ooooooooooooooooooooo&&oooooob.
      .oooooooooooooooooooo&@@@@@@oooob.
      .ooooooooooooooooooooooo&&@@@@@ooob.
      doooooooooooooooooooooooooo&@@@@ooob
      doooooooooooooooooooooooooo&@@@oooob
      dooooooooooooooooooooooooo&@@@ooooob
      dooooooooooooooooooooooooo&@@oooooob
      `dooooooooooooooooooooooooo&@ooooob'
      `doooooooooooooooooooooooooooooob'
      `doooooooooooooooooooooooooooob'
      `doooooooooooooooooooooooooob'
      `doooooooooooooooooooooooob'
      `doooooooooooooooooooooob'
      jgs `dooooooooobodoooooooob'
      `doooooooob dooooooob'
      `"""""""' `""""""'

      Eliminar
    6. francisco y Diego son jotos

      Eliminar
  27. Por que jair es tan pvto :v

    ResponderEliminar
  28. Muchas Gracias :D, yo también estoy haciendo un tecnologo en ADSI.

    ResponderEliminar
  29. Hola amigo buenas tardes, sabes de alguna formar para mostrar un elemento de Jtable, en una ventana emergente o en este en un showmessage?

    ResponderEliminar
  30. Jair es pvto y marik jaja salu2

    ResponderEliminar
  31. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  32. Hola buenas tardes, tengo una consulta. cuando se hace entrada y salida de datos por consola se puede, en lugar de concatenar (Por ejemplo: System.out.printf( "La suma es " + suma );) se puede escribir (System.out.printf( "La suma es %d\n", suma );) - hay alguna forma de hacer lo mismo con JOptionPane?

    ResponderEliminar
  33. Muy buena tu merca amigo

    ResponderEliminar
  34. .|                                 ”-'\,,
    ..\           '\              ~,,         “~-.,_
    ...\           \ /               “,           "~,_
    ....\           \|         _._      \             ”-.
    ......\          \          (O)      \              '\._
    .......\         '\'        "*"        |              |0)
    .........\         '\                /               /""
    ...........\         \             ,-“                /
    ............\         \         _="     ',_.        ,-“
    ............\,         \  "”'~---~”"            = "”~~

    ResponderEliminar
  35. Thank You for putting up a blog on this really appreciate the efforts you have taken into creating this article on Java Swing, appreciate how you have put down the necessary pointers and clearly targeted major key factors, with regards to this topic you must check data science course in bangalore they have a lot to offer with regards to data science in terms of training and live projects. and will guide you in the right direction for both freshers and Professionals who want to make a career transition

    ResponderEliminar
  36. Excelente. muy buena información¡¡¡¡¡

    ResponderEliminar
  37. https://ufavvip789.vip/
    https://betworld789.net/

    https://fluck2222.wixsite.com/chudjennew02

    ResponderEliminar
  38. Respuestas
    1. por eso los de cecyte son unos nacos de miarda ,aqui puro bacho jajajajajajajaja

      Eliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!