J'ai un projet Java dans NetBeans 7.0.
Je veux ajouter une image à une étiquette dynamiquement. L'image différera selon l'état du programme.
Je mets une image de ce type, 'remplissage.jpg', dans le dossier 'ressources' de mon projet.
Je veux accéder à ce fichier correctement (pas par chemin absolu ou relatif, car cela causera des problèmes lorsque je construis le fichier jar).
J'ai donc trouvé cette méthode:
ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);
Il me donne toujours Java.lang.NullPointerException . Mais je suis sûr qu'il existe cette image, car je peux affecter l'image à l'étiquette à partir du menu Propriétés de NetBeans correspondant à cette étiquette (mais je ne le souhaite pas, je vouloir ajouter l'image en code Java).
Qu'est-ce que je fais mal et comment puis-je obtenir cette image correctement?
Merci, Valter Henrique , avec ton conseil, j’ai réalisé que j’avais simplement entré un chemin incorrect pour cette image .
String pathToImageSortBy = "resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
Mais la manière correcte était d'utiliser le nom de mon projet dans le chemin d'accès à la ressource
String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
Cela a été une douleur, en utilisant netBeans IDE 7.2.
Ajoutez un dossier de ressources au dossier src :
Après le nettoyage/construction, cette structure est propagée dans le dossier de construction:
Pour accéder aux ressources:
dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/images/logo.png")));
et:
if (common.readFile(getClass().getResourceAsStream("/resources/allwise.ini"), buf).equals("OK")) {
a travaillé pour moi. Notez que dans un cas, il y a un "/" principal et dans l'autre, il n'y a pas . Ainsi, la racine du chemin d'accès aux ressources est le dossier " classes " dans la construction dossier.
Double-cliquez sur le fichier jar exécutable dans le dossier dist. Le chemin d'accès aux ressources fonctionne toujours.
J'ai une approche légèrement différente qui pourrait être utile/plus bénéfique pour certains.
Sous votre dossier de projet principal, créez un dossier de ressources. Votre structure de dossier devrait ressembler à ceci.
Accédez aux propriétés de votre projet. Vous pouvez le faire en cliquant avec le bouton droit de la souris sur votre projet dans la fenêtre de l'onglet Projets et en sélectionnant Propriétés dans le menu déroulant.
Sous catégories sur le côté gauche, sélectionnez Sources.
Dans les dossiers de package source à droite, ajoutez votre dossier de ressources à l'aide du bouton Ajouter un dossier. Une fois que vous cliquez sur OK, vous devriez voir un dossier de ressources sous votre projet.
Vous devriez maintenant pouvoir extraire des ressources en utilisant cette ligne ou une approche similaire:
MyClass.class.getResource("/main.jpg");
Si vous deviez créer un package appelé Images dans le dossier des ressources, vous pouvez récupérer la ressource de la manière suivante:
MyClass.class.getResource("/Images/main.jpg");