Noticias

* Completa este formulario para conocer los temas de tu interes, te tomará unos segundos.
* Nuevos temas en CAKEPHP
* Ahora puedes bajar los proyectos finalizados!
* Sigue a la página para seguir creciendo!!

martes, 29 de noviembre de 2011

Java: JOptionPane: Menú desplegable

6 comentarios :
Introducción

Muchas veces, se necesitan poner datos por defecto y que el usuario simplemente seleccione, por ejemplo: los días de la semana, meses, país, entre otros. En esta entrada aprenderemos a hacer un combo box o menú desplegable con JOptionPane.

Desarrollo

Ante todo se debe importar el JOptionPane, con la siguiente línea:

import javax.swing.JOptionPane;

Ya importado procedemos a crear un vector que va a contener los textos de nuestro menú.

Object [] colores ={"rojo","negro","amarillo","azul","majenta"}; 

La inicialización se trabaja como cualquier otra: 
 - El tipo de dato String u Object, respectivamente.
 - El nombre de nuestro vector, que llamé Colores.
 - La inicialización del texto de nuestro menú, estos van entre comillas, separados por comas y finalmente encerrados entre llaves.

Ahora ya que inicializamos nuestro vector, creamos nuestra ventana con el menú desplegable con estas líneas de código.

Object opcion = JOptionPane.showInputDialog(null,"Selecciona un color", "Elegir",JOptionPane.QUESTION_MESSAGE,null,colores, colores[0]);

Las partes que componen estas dos líneas de código son las siguientes:

 - Creamos una variable de tipo Object debido a que lo que esto retorna es un objeto que va a valer el texto que se haya elegido.
 - Sentencia JOptionPane.showInputDialog, la normal a la hora de pedir datos al usuario.
   - null, este caso no ocupa nada.
   - Mensaje que vamos a mostrar en este caso "Selecciona un color".
   - Titulo de nuestra ventana, yo le puse Elegir.
   - Tipo de mensaje, para saber los tipos de mensaje ver acá:
   - null, para icono predeterminado o el nombre de nuestra imagen para uso personalizado, para colocar un imagen personalizada ver acá:
   - nombre de nuestro vector inicializado.
   - Opción que se quiere que este predeterminada en nuestra ventana, el cero se puede cambiar por cualquier número mientras este en el rango del vector, recordar que el primero es cero, luego viene el uno y así sucesivamente.

Cuando presionamos cancelar o equis este devuelve un null.

Finalmente nuestra ventana se vería así:


Y con el menú desplegado se vería así:


Conclusiones

Esta opción es muy sencilla de usar, cuando se requiere que el usuario seleccione algún valor predeterminado.

Puede ser muy útil para no generar toda una ventana solo por un menú desplegable o cambiar de ventana por la misma razón.

6 comentarios :

  1. Como hago para que cuando escoja una opcion me permita hacer algo especifico?

    ej: escojo un color y le doy aceptar
    if(opcion==amarillo){
    imprimir algo.....

    if)opcion==rojo){
    imprimir otra cosa....

    esa es la idea, se puede hacer algo asi? como?

    ResponderEliminar
    Respuestas
    1. pues así como lo escribió...
      Object opcion = JOptionPane.showInputDialog(null,"Selecciona un color", "Elegir",JOptionPane.QUESTION_MESSAGE,null,colores, colores[0]);
      cuando le das aceptar retorna el valor seleccionado solo haces los if que pusiste y listo
      algo así sería un if

      if (opcion.toString().equalsIgnoreCase("rojo")){
      System.out.println("Eligió el color Rojo!! :D ");
      }

      lo de .toString().equalsIgnoreCase() es porque el objeto opcion es un String por tanto paso su contenido a una cadena (con .toString()) para luego poder compararla con otra cadena ignorando mayúsculas y minúsculas (con .equalsIgnoreCase()), me gusta más evaluarlo asi que con == porque ese == puede errar cuando trabajos con otros objetos. Solo fue que yo me acostumbre con el .equals para cadenas e == para enteros boolean etc

      Eliminar
  2. Hola, hay alguna forma de poder poner iconos junto a cada opción, osea, que las opciones salgan Icono, Opción?

    ResponderEliminar
    Respuestas
    1. Hola Karem, creo que eso no es posible, ya que el componente no soporta ese tipo de datos.
      Solo pueden colocarse textos, si encuentras alguna forma puedes comentarla por acá!!

      Eliminar
  3. Hola que tal , quería preguntar que después de haber seleccionado una opción y se ejecute un mensaje , ¿como puedo hacer que regrese a la serie de opciones?

    Por cierto ,muchas gracias me ayudaste muchísimo.

    ResponderEliminar
    Respuestas
    1. Hola, dejame hacer un ejemplo y te respondo!

      Eliminar