web-dev-qa-db-fra.com

Comment changer l'icône de l'application par défaut en Java?

J'utilise NetBeans pour essayer de remplacer l'icône de tasse à café Java par un fichier png que j'ai enregistré dans un répertoire de ressources du fichier jar. J'ai trouvé de nombreuses pages Web qui prétendent avoir une solution, mais aucune n'a fonctionné jusqu'ici.

Voici ce que j'ai pour le moment (en laissant de côté le bloc try-catch):

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

La classe qui contient ce code se trouve dans com.xyz package, si cela fait une différence. Cette classe étend également JFrame. Ce code renvoie une exception MalformedUrlException sur la première ligne.

Quelqu'un a une solution qui fonctionne?

60
Bill the Lizard
Java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");

Peut nécessiter ou non un «/» à l'avant du chemin.

69
JeeBee

Vous pouvez simplement aller sur Netbeans, en mode création, aller à la propriété JFrame, choisir la propriété icon image, choisir la propriété iconImage du formulaire en utilisant: "Code personnalisé" puis dans la fonction Form.SetIconImage(), insérer le code suivant: 

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

N'oubliez pas d'importer: 

import Java.awt.Toolkit;

dans le code source!

13
Ayoub Aneddame

Ou placez l'image dans un emplacement relatif à une classe et vous n'avez pas besoin de toutes les informations de paquet/chemin dans la chaîne elle-même.

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

Ainsi, si vous déplacez la classe dans un autre package, vous n'avez pas à rechercher toutes les chaînes, vous ne faites que déplacer la classe et son répertoire de ressources.

4
John Gardner

Essayez cette écriture après

initcomponents();

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
4
user2895893
    /** 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);

C’est ce que j’ai utilisé dans l’interface graphique de Netbeans et cela a fonctionné à la perfection

3
user1456935

Vous devez définir des icônes de différentes tailles. Les distributions Windows et Linux comme Ubuntu utilisent différentes icônes dans la barre des tâches et dans 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);
1
ron190

Dans une classe qui étend une javax.swing.JFrame, utilisez la méthode setIconImage

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

Exemple:

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);
0
Rrezart A. Prebreza

Vous pouvez essayer celui-ci , cela fonctionne très bien: 

`   ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
    this.setIconImage(icon.getImage());`
0
Mohamed Aharrat

constructeur de cadre intérieur

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