2011-08-07 14 views
5

Tengo un diálogo emergente en mi aplicación que le dice al usuario sobre el programa. Todo iba bien hasta el icono personalizado. Esto es lo que he intentado:Java JOptionPane.showMessageDialog problema de icono personalizado?

Intento 1:

JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("home/user/Pictures/default.jpg")); 

Intento 2:

final icon = new ImageIcon("home/user/Pictures/default.jpg")); 

    JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon); 

Intento 3:

final icon = new ImageIcon("home/user/Pictures/default.jpg")); 
showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon); 

Intento 4:

(Gritando en java)

Intento 5:

El uso de URL


Todos han tenido ningún efecto sobre el programa y en lugar de una imagen No obtengo nada


Detalles:

  • No hay excepciones
  • La ruta del archivo que sí existe
  • Mi IDE no devuelve excepciones, ni las advertencias de ningún tipo
  • Sí, He puesto también intenté el camino /home/user/Pictures/default.jpg
  • .ico's, .png's, .jpg's don no funciona Aunque no estoy tan seguro de .gif en este momento.

¡Ayuda! :(

+4

has intentado poner '/ home/user ...' en lugar de 'home/user ...' porque de lo contrario busca un directorio de inicio desde el lugar donde ejecutas la aplicación, que solo funciona si lo ejecutas en '/'. – Lanbo

+0

Ya lo he intentado. –

+1

Sí, no estás buscando en el lugar correcto. ¿Sabes a ciencia cierta dónde está tu directorio de usuarios? 'System.out.println (System.getProperty (" user.dir "));' –

Respuesta

8

Esto funcionó para mí:

import javax.swing.*; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     final ImageIcon icon = new ImageIcon("C:\\Users\\John\\Desktop\\lol.jpg"); 
     JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon); 
    } 
} 

Aquí es una variante que utiliza una dirección URL:

import javax.swing.*; 
import java.net.*; 

public class TestIcon 
{ 
    public static void main(String[] args) throws Exception 
    { 
     final ImageIcon icon = new ImageIcon(new URL("http://www.gravatar.com/avatar/a1ab0af4997654345d7a949877f8037e?s=128&d=identicon&r=PG")); 
     JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon); 
    } 
} 
+0

No funciona para mí :( –

+0

@Ken: ¿así que usar la ruta completa a la imagen no funciona? Hm –

+0

Tiene razón, señor –

0

Prueba esto:

JPanel panel = new JPanel(); 
BufferedImage myPicture = null; 
try 
{ 
    myPicture = ImageIO.read(new File("home/user/Pictures/default.jpg")); 
} 
catch(Exception ex){} 
panel.add(new JLabel(new ImageIcon(myPicture))); 
panel.add(new JLabel("blah blah blah")); 
Object[] options = {}; 
JOptionPane pane = new JOptionPane(); 
pane.showOptionDialog(null, panel, "About", JOptionPane.NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, null); 
0

Lo mismo ING le pasó a mí, gracias a Dios esperando yo que mi imagen se cargó No en el archivo 'fuente', que era en el expediente 'bin' .. el camino estaba mal

ImageIcon preg1 = new ImageIcon("C:\\Java\\TestPsicologico\\bin\\Preg1.jpg"); 
3

Sé que esto es un poco viejo, pero como no hubo respuesta que resolvió mi pregunta, después de algunas investigaciones, esto fue lo que funcionó para mí (trabajando con Java 1).7):

He utilizado el método getClass().getResource(<path>) así:

ImageIcon icon = new ImageIcon(getClass().getResource(<pathToIcon>)); 

Me parece como una buena práctica para crear una carpeta 'recursos' en su proyecto, y en su interior una carpeta 'iconos' , y para referirse a esa ubicación cada vez que necesita un ícono (o cualquier otra cosa como archivos de audio, imágenes, etc.)

0

Todo el mundo tenía razón, es solo que la ruta copiada es incorrecta.

Sólo hay que colocar la imagen preferida en la carpeta del proyecto y su imagen se mostrará en la pestaña de navegación del proyecto, después de eso sólo tienes que copiar la ruta de la imagen y pegarla en:

final ImageIcon icon = new ImageIcon("*Paste copied path*"); 


JOptionPane.showMessageDialog(null, infoMessage, " " + titleBar, JOptionPane.INFORMATION_MESSAGE,icon); 
Cuestiones relacionadas