2010-03-11 6 views
0
searchIcon = new ImageIcon("searchIcon.png"); 

searchIconLabel = new JLabel(); 
searchIconLabel.setIcon(searchIcon); 

.... 

searchHorizontalPanel.add(searchIconLabel); 

J'essaie de charger l'icône mais elle n'apparaîtra pas. Le jpanel est dans une boxlayout. Je ne sais pas si cela gâche les choses. C'est étrange parce que je peux ajouter à peu près n'importe quoi d'autre à l'exception des images d'icônes. J'ai parcouru le débogueur et searchIcon montre la largeur et la hauteur à -1. Est-ce que cela signifie que l'image n'est pas chargée?Java - ImageIcon n'affichera pas l'image

+0

La majorité de vos questions sont traitées dans le tutoriel Swing. Pourquoi ne pouvez-vous pas lire le tutoriel avant de poster une question? Je viens de vous donner un lien vers le tutoriel, mais vous n'avez pas encore lu et continuer à poser des questions de suivi parce que vous n'avez pas compris la solution originale d'une ligne. – camickr

+0

camickr, je regarde toujours à travers les javadocs et les tutoriels swing avant que je n'arrive à empiler le débordement. J'ai déjà vu ce swing avant et ce n'était pas une aide pour moi, principalement parce que la première méthode ne fonctionnait pas pour moi et que je ne voulais pas utiliser la méthode getResource. Alors, arrêtez s'il vous plaît ASSuming. Merci. Bonne journée. – ShrimpCrackers

+0

Je vous suggère de lire la FAQ http://stackoverflow.com/faq – ShrimpCrackers

Répondre

8

Votre fichier image doit se trouver dans le même répertoire que celui dans lequel vous exécutez l'application.

Si le fait dans le même répertoire que la classe de faire l'appel, vous pouvez utiliser:

searchIcon = new ImageIcon(getClass().getResource("searchIcon.png")); 

Si elle est dans un emplacement arbitraire alors vous devrez spécifier le chemin complet.

+0

Merci. J'ai ajouté le chemin complet et cela fonctionne. C'est étrange cependant ... dans un précédent programme Java que j'ai écrit, j'ai juste eu le fichier dans le dossier du projet (en utilisant NetBeans) et il s'est bien chargé. – ShrimpCrackers

+0

Cela pose cependant un problème. Que faire s'il n'est pas exécuté sur le même ordinateur? Le chemin sera différent. Comment ajouter un chemin qui fonctionnera sur tous les ordinateurs? – ShrimpCrackers

+1

-1 Si c'est réellement, dans le même répertoire que la classe qui fait l'appel, alors le code affiché avec la question fonctionnera. C'est pourquoi la meilleure réponse est de réellement lire le tutoriel afin de comprendre ce qui se passe et ne pas prendre la réponse de raccourci juste parce que quelqu'un publie une ligne de code, parce que vous ne comprenez toujours pas pourquoi cela fonctionne. Faites quelques lectures de base par vous-même. – camickr

1

I sont passés par le débogueur et searchIcon est montrant la largeur et la hauteur de -1. Est-ce que cela signifie que l'image n'est pas en cours de chargement?

Oui.

Lisez l'API JLabel et vous trouverez un lien vers le tutoriel Swing sur "Comment utiliser les lables" qui a un exemple de travail.

Vous trouverez également une section sur "Comment utiliser les icônes" qui montre toutes les différentes façons de spécifier l'emplacement de l'icône correctement.