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

J’utilise NetBeans, en essayant 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é beaucoup de pages Web différentes qui prétendent avoir une solution, mais jusqu’à présent, aucune ne fonctionne.

Voici ce que j’ai en ce 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 est dans le package com.xyz , si cela fait une différence. Cette classe étend également JFrame. Ce code lance une exception MalformedUrlException sur la première ligne.

Quelqu’un at-il une solution qui fonctionne?

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

Peut ou non exiger un «/» au début du chemin.

Vous pouvez simplement aller sur Netbeans, dans la vue de conception, aller à la propriété JFrame , choisir la propriété icon icon, choisir la propriété iconImage la iconImage utilisant: “Code personnalisé” puis dans la fonction Form.SetIconImage() , mettre 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!

Ou placez l’image dans un emplacement par rapport à une classe et vous n’avez pas besoin de toutes ces informations de package / chemin dans la chaîne elle-même.

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

De cette façon, si vous déplacez la classe vers un autre package, vous n’avez pas à rechercher toutes les chaînes, vous déplacez simplement la classe et son répertoire de ressources.

Essayez cette écriture aprè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); 

C’est ce que j’ai utilisé dans l’interface graphique de netbeans et cela a parfaitement fonctionné

Dans une classe qui étend une méthode d’utilisation javax.swing.JFrame setIconImage .

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

Vous devez définir des icons de différentes tailles, les dissortingbutions Windows et Linux comme Ubuntu utilisent des icons différentes dans la barre des tâches et 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 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); 

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); 

constructeur de cadre intérieur

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