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?
Java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
Peut nécessiter ou non un «/» à l'avant du chemin.
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!
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.
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 fonctionné à la perfection
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);
Dans une classe qui étend une javax.swing.JFrame
, utilisez la méthode setIconImage
.
this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
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);
Vous pouvez essayer celui-ci , cela fonctionne très bien:
` ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
this.setIconImage(icon.getImage());`
constructeur de cadre intérieur
try{
setIconImage(ImageIO.read(new File("./images/icon.png")));
}
catch (Exception ex){
//do something
}