domingo, 27 de noviembre de 2011
Java: JOptionPane: Colocar iconos personalizados
Francisco
17:18
confirm dialog
,
iconos
,
iconos personalizados
,
input
,
java
,
jcombox
,
joptionpane
,
joptionpane confirm
,
optionDialog
,
por: Francisco Vargas
,
programación java
,
showConfirmDialog
,
ventanas java
24 comentarios
:
Introducción
Para colocar iconos, ya sean animados o no, en nuestros ventanas de JOptionPane (algunas no lo aceptan), se importan las librerías Icon e ImageIcon, las líneas para esto se presentan a continuación:
Una vez que los importamos procedemos a inicializar nuestro icono:
La sentencia anterior se descompone en los siguientes elementos:
- Nuestro Icon que lo importamos anteriormente
- el nombre de nuestro objeto
- new, para la creación de nuevo objeto en la instancia
- ImageIcon que lo habíamos importado anteriormente
showMessageDialog:
showOptionDialog:
showInputDialog (JCombox):
showConfirmDialog:
En el caso del JCombox y en el caso del OptionDialog si no se va a poner un icono se coloca un null.
Conclusiones
Colocar iconos personalizados es sumamente sencillo y puede dar un aspecto más profesional a nuestra aplicación.
No es bueno colocar imágenes muy grandes debido a que la ventana en sí es pequeña, ni tampoco es bueno colocar imágenes que distraigan al usuario (como animaciones y demás).
Cuando se programa cada quién quiere darle su "toque" personal a su aplicación, en entradas anteriores hemos visto como utilizar ventanas de diálogo de la libería de java JOptionPane, hoy veremos como personalizar el icono de estas con alguna imagen que nosotros queramos utilizar.
Desarrollo
Para colocar iconos, ya sean animados o no, en nuestros ventanas de JOptionPane (algunas no lo aceptan), se importan las librerías Icon e ImageIcon, las líneas para esto se presentan a continuación:
import javax.swing.Icon; import javax.swing.ImageIcon;
Una vez que los importamos procedemos a inicializar nuestro icono:
Icon icono = new ImageIcon(getClass().getResource("ruta local de la imagen"));
La sentencia anterior se descompone en los siguientes elementos:
- Nuestro Icon que lo importamos anteriormente
- el nombre de nuestro objeto
- new, para la creación de nuevo objeto en la instancia
- ImageIcon que lo habíamos importado anteriormente
- la ruta completa de la imagen, esta va entre comillas y con la extensión de la imagen: gift, png entre otras, esto es para que el programa sepa donde ir a buscar la imagen.
Luego para utilizar a nuestra imagen en diversos tipos de ventanas se utilizaría el siguiente código:
showMessageDialog:
JOptionPane.showMessageDialog(null," Aprendiendo a poner imagenes ", "Imagen Java", JOptionPane.PLAIN_MESSAGE, icono);
showOptionDialog:
JOptionPane.showOptionDialog(null, "¿Queres salir a Bailar esta Noche?","Sita", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, icono, botones, botones[0]);
showInputDialog (JCombox):
Object opcion = JOptionPane.showInputDialog(null,"Selecciona un color", "Elegir",JOptionPane.QUESTION_MESSAGE, icono ,colores, colores[0]);
showConfirmDialog:
JOptionPane.showConfirmDialog(null, "Realmente desea salir de Hola Swing?", "Confirmar salida", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, icono);
En el caso del JCombox y en el caso del OptionDialog si no se va a poner un icono se coloca un null.
Conclusiones
Colocar iconos personalizados es sumamente sencillo y puede dar un aspecto más profesional a nuestra aplicación.
No es bueno colocar imágenes muy grandes debido a que la ventana en sí es pequeña, ni tampoco es bueno colocar imágenes que distraigan al usuario (como animaciones y demás).
Suscribirse a:
Enviar comentarios
(
Atom
)
Tio, sos mi heroe ! Gracias ! thanks ! arigatou ! xie xie !
ResponderEliminarTu ta loko?
Eliminarno sirvioooo
ResponderEliminarexcelente...¡¡¡
ResponderEliminarxvr men!! solo para ajustar el detalle para los que no saben aun: Icon icono = new ImageIcon("ruta de la imagen");
ResponderEliminartiene que ser la ruta absoluta x ejemplo: "C:\Users\jsanchez\Desktop\topgun1\src\imagenes" o crearse una funcion que inicialice tu imagen tomandola de tu carpeta del proyecto.
que funcion seria para tomar la imagen dese el pryecto.. porq si kiero movilizarme con el proyecto la imagen ya no saldria
EliminarSi la imagen está en el proyecto solo tienes que especificar la ruta local: Ejemplo:
EliminarLa carpeta miProyecto tiene varias carpetas dentro que serian: src , bin, que son las de un proyecto normal y agregamos la carpeta "images"
miProyecto tendría tres carpetas (src, bin, images), si mi imagen se llama patito.png y está dentro de mi carpeta images (miProyecto/images/)
para asignar la ruta de mi imagen se puede hacer de dos formas (porque algunas veces le da que no la reconoce):
1. miProyecto/images/patito.png
2. images/patito.png
El método sería el mismo que que describió Jean:
Icon icono = new ImageIcon("ruta de la imagen");
ahora cuando movilices tu proyecto la imagen irá dentro de este por ende va a reconocer la imagen
Atte: Fran..!!
Util men, Grax!!!
ResponderEliminarPodrias poner un ejmplo con imagen de showInputDialog ya que no me queda muy claro !!gracias
ResponderEliminarMira este tema. en el se explica bien todo:
Eliminarhttp://franvarvil.blogspot.com/2011/11/menu-en-joptionpane-jcombox.html
Amigo con todo respeto, no me funciona con el input ni por el hpta, muestra como leer una variable entera o double por favor
ResponderEliminarhey amigo no abria una manera de que lo hicieras con pantallazos? la verdad soy muy novato y le intento muchas veces y no me sale :/
ResponderEliminarHola amigo, pantallazos de que manera? del código o de la forma en que se van a ver?
EliminarEste comentario ha sido eliminado por el autor.
Eliminarya lo logre :D igual gracias
Eliminarbro, tengo otra duda XD, cuando hago un ejecutable del programa y lo paso a otro pc, la imagen no se ve, que hago?
ResponderEliminarComo agregas la imagen? y añades la imagen como recurso cuando creas el ejecutable?
EliminarIntenré poner la ruta de la imagen en mi computador así:
ResponderEliminarC:\Users\Juan Pablo\Desktop\logo.PNG
Pero no me funciona, como es posible hacer que funcione??
Use una ruta relativa porque si cambia de pc su ruta no funcionará. Una forma fea de hacerlo es colocar la imagen con los .class entonces solo llamas a la imagen, una más formal de hacerlo es crear una capeta imagenes dentro de la capeta principal del proyecto y dar la ruta: carpetaImagenes/imagen.extención o si no resulta así colocan un / antes quedando así: /carpetaImagenes/imagen.extención
EliminarHola, prueba quitando el primer "/" de la ruta, si no sirve verifica bien la extención, algunas veces vienen en mayuscula o así.
ResponderEliminarEsto funciona desde el proyecto:
ResponderEliminarIcon icon = new ImageIcon(ClassLoader.getSystemResource("Imagenes/Nombre.png"));
Y creo que también esto: Icon icon = new ImageIcon("src/Imagenes/Nombre.png");
EliminarGracias por el Dato
Eliminary si pasas tu codigo bro?
ResponderEliminar