GOOGLE ADS

samedi 23 avril 2022

Ajouter une image au JAR Java

J'utilise des images dans JFrame, j'ai donné un chemin pour charger l'image dans le panneau du cadre, mais quand j'ai créé le pot de l'application, il n'affiche pas d'images.
Où dois-je placer l'image?
Comment dois-je spécifier le chemin?

setIconImage(Toolkit.getDefaultToolkit().getImage(
"D:\\RFT\\src\\dailogBox\\dump.jpg"));

comme ça j'ai fait.


Solution du problème

C'EST la meilleure façon de gérer toutes les images et icônes dans une application JAR.

Une fois que vous avez compressé toutes vos images et icônes dans son propre fichier JAR - Configurez votre chemin de construction en ajoutant le fichier JAR d'images dans votre onglet bibliothèques afin qu'il soit maintenant inclus dans votre chemin de classe.

Ensuite, utilisez simplement les 3x lignes de code suivantes au début de votre constructeur pour accéder à toute image dont vous avez besoin, y compris une image SystemTray qui n'accepte pas les simples ImageIcon comme icône principale (bizarre, je sais). Les 3x lignes sont:

 URL iconUrl = this.getClass().getResource("/image-iconb.png");
Toolkit tk = this.getToolkit();
someimgicon = tk.getImage(iconUrl);

(someimgicon est juste un constructeur déclaré variable Image)
Maintenant, vous pouvez définir une icône de fenêtre aussi simplement que :

setIconImage(someimgicon);

et en même temps utiliser la même variable lors de la définition du System TrayIcon en déclarant:

 trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);

Ce qui précède vous permet de déclarer des images ou des ImageIcons facilement et de manière centralisée sans courir le risque de ne pas conserver les ressources d'image au bon endroit. Il le garde bien rangé, avec le JAR contenant toutes vos images automatiquement compilées au moment de l'exécution et de la distribution de votre programme.

En prime, une fois que le JAR est enregistré dans votre chemin de classe - vous pouvez continuer à ajouter d'autres images dans le même JAR à tout moment sans aucun problème - Tout fonctionne et les images ajoutées sont instantanément disponibles pour votre application.

Bien mieux à mon avis.

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...