Pregunta

Estoy usando NetBeans, tratando de cambiar el icono familiar de la taza de café Java a un archivo png que he guardado en un directorio de recursos en el archivo jar. He encontrado muchas páginas web diferentes que afirman que tienen una solución, pero hasta ahora ninguna de ellas funciona.

Esto es lo que tengo en este momento (dejando de lado el bloque try-catch):

URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);

La clase que contiene este código está en el paquete com.xyz , si eso marca alguna diferencia. Esa clase también extiende JFrame. Este código está lanzando una excepción MalformedUrlException en la primera línea.

¿Alguien tiene una solución que funcione?

¿Fue útil?

Solución

java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");

Puede o no requerir una '/' en la parte frontal de la ruta.

Otros consejos

Puede simplemente ir a Netbeans, en la vista de diseño, ir a la propiedad JFrame , elegir la propiedad de la imagen del icono, elegir la propiedad iconImage de Form Form usando: " Código personalizado " y luego en la función Form.SetIconImage () coloque el siguiente código:

Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))

No te olvides de importar:

import java.awt.Toolkit;

en el código fuente!

O coloque la imagen en una ubicación relativa a una clase y no necesita toda la información de ese paquete / ruta en la cadena.

com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );

De esa manera, si mueve la clase a un paquete diferente, no tiene que encontrar todas las cadenas, simplemente mueve la clase y su directorio de recursos.

Prueba esto, escribe después

initcomponents();

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
    /** Creates new form Java Program1*/
    public Java Program1() 


    Image im = null;
    try {
    im = ImageIO.read(getClass().getResource("/image location"));
    } catch (IOException ex) {
    Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
    }
    setIconImage(im);

Esto es lo que usé en la GUI en netbeans y funcionó perfectamente

En una clase que extiende un javax.swing.JFrame use el método setIconImage .

this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());

Debes definir íconos de varios tamaños, las distribuciones de Windows y Linux como Ubuntu usan íconos diferentes en la barra de tareas y en Alt-Tab.

public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");

List<Image> images = new ArrayList<>();
try {
    images.add(ImageIO.read(HelperUi.ICON96));
    images.add(ImageIO.read(HelperUi.ICON32));
    images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
    LOGGER.error(e, e);
}

// Define a small and large app icon
this.setIconImages(images);

Ejemplo:

URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\\Users\\RrezartP\\Documents\\NetBeansProjects\\Inventari\\src\\Gui\\icon\\report-go-icon.png");      
btnReport.setIcon(iChing); 
System.out.println(imageURL);

dentro del constructor de cuadros

try{    
       setIconImage(ImageIO.read(new File("./images/icon.png")));   
   }
catch (Exception ex){
       //do something
   }

Puedes probar este , funciona bien:

`   ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
    this.setIconImage(icon.getImage());`
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top