Java: probleme de chargement d'image pour un imageicone [Résolu]

papiotte 6 Messages postés vendredi 3 novembre 2000Date d'inscription 18 janvier 2009 Dernière intervention - 23 mars 2008 à 10:30 - Dernière réponse :  Utilisateur anonyme
- 23 mars 2008 à 16:31
Bonjour,

je développe actuellement une application java.

mon problème vient du fait que j'utilise des boutons avec icones:

        ImageIcon image= new ImageIcon("./Images/recadrer.gif");
        bouton= new JButton(image);

Le répertoire Images est un répertoire contenant toutes mes images:

Projet Toto
     -->Images
          -->recadrer.gif
          -->zoom.gif
          -->.....
     -->Package1
          -->demarrer.class
     -->Package2
     -->...

Losque
je fais tourner l'appli sur Eclipse, pas de soucis. J'ai donc exporté
le code sous un format jar executable et lorsque je lance l'appli, les
images dans les boutons ne s'affichent pas. C'est pourquoi, je me suis donc documenté
sur le net et j'ai changé la ligne de commande précédente par celle ci:

    ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/Images/recadrer.gif")));
    bouton= new JButton(image);

Dans
ce cas la ca marche pour ce bouton. J'ai donc appliqué cette même
technique pour les autres boutons. Mais cette fois ci, l'executable ne
se lance plus... plus rien du tout.... malgré le fait que l'application
sur Eclipse fonctionne toujours. Chaque bouton est construit par une classe.

Si vous avez rencontré la même situation, pourriez vous m'aider.

Merci les gars.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 23 mars 2008 à 10:50
3
Merci
Salut,

Pourquoi poster la même question avec si peu de temps d'intervalle ? Je supprime l'ancienne !

Regarde dans la console (lance ton jar à partir de la ligne de commande windows, ou dans une console Linux) pour voir l'erreur qui se produit.
______________________________________
DarK Sidious

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
Utilisateur anonyme - 23 mars 2008 à 11:13
3
Merci
Utilise plutôt la méthode getResource() de la classe Class pour charger ton image si elle se trouve à l'intérieur de ton archive Java :

ImageIcon image = new ImageIcon( getClass().getResource("/Images/recadrer.gif") );

ou bien peut-être "Projet Toto/Images/recadrer.gif"

Tu n'as pas dû très bien chercher sur le net ou bien mélanger un truc que tu as vu avec d'autres tentatives de ton cru car ce que tu as utilisé est inutilement compliqué.

Déjà, tu devrais faire ce que Darksidious propose pour que l'on sache précisément ce qui pose problème pour être sûr du diagnostic et donc de la solution à proposer. Ca devient crucial parce que je vois mal comment t'aider autrement. Si ton projet était open source, j'aurais téléchargé ton code source et j'aurais essayé de voir pourquoi ça dysfonctionne.

Je te conseille aussi d'utiliser ANT plutôt que la fonction d'export d'Eclipse pour créer ton archive Java, ça t'évitera quelques mauvaises surprises... Tu dépends trop de ton IDE, apprends à faire des archives Java sans ça parce que ça ne sert pas à grand chose si tu fais des archives Java qui ne marchent que quand tu es sous Eclipse.

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
papiotte 6 Messages postés vendredi 3 novembre 2000Date d'inscription 18 janvier 2009 Dernière intervention - 23 mars 2008 à 15:23
3
Merci
Hello,

ca y est, je suis content, j'ai trouvé l'astuce (enfin l'astuce était sur le forum).

On peut en conclure que les commandes explicitées ci dessus fonctionnent parfaitement. Par contre il faut bien vérifier l'extention des fichier images:

Dans mon cas:     recadrer.gif était ok d'où le fonctionnement de l'appli
                           zoom.gif est en fait zoom.GIF d'où l'échec de l'application

Haaarrrrrggghhhhh!!!!!!

Que le fait de ne pas utiliser les commandes (windows ou linux) me serve de leçon.

En tout cas merci de vos réponse. A charge de revanche (enfin, vous avez l'air tout de même bien câlé)

Merci papiotte 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de papiotte
papiotte 6 Messages postés vendredi 3 novembre 2000Date d'inscription 18 janvier 2009 Dernière intervention - 23 mars 2008 à 12:32
0
Merci
Salut, merci pour les réponses mais cela ne fonctionne toujours pas. J'ai donc executé le jar dans une fenetre window et effectivement j'ai une exeception:

Exception in thread "main" java.lang.NullPointerException
       at javax.swing.ImageIcon.(ImageIcon.java:138)
       at package_1.BoutonZoom.(BoutonZoom.java:22)
       at package_1.GridBagWindow.(GridBagWindow.java:130)
       at package_1.Demarrer.(Demarrer.java:17)

Ce qui est bizard, c'est que j'ai exactement le même code pour le bouton recadrer. Lorsque seul le code de BoutonRecadrer.java est modifié, ca fonctionne:

Pour BoutonRecadrer.java:
ImageIcon image = new ImageIcon(getClass().getResource("/Images/recadrer.gif"));
bouton= new JButton(image);

Pour BoutonZoom.java:
ImageIcon image = new ImageIcon(getClass().getResource("/Images/zoom.gif"));

bouton= new JButton(image);

Si vous avez une Idée.... (au fait Gouessej, comment transmettre mes sources?)
Commenter la réponse de papiotte
Utilisateur anonyme - 23 mars 2008 à 16:31
0
Merci
De rien, on est là pour s'entraider.

Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.