IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[JAR] Utiliser des images d'un .JAR


Sujet :

Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [JAR] Utiliser des images d'un .JAR
    Bonjour,
    j'ai construit une applicationa avec Eclipse, elle contient des boutons contenants des icones, quand je roule mon app à partir d'Éclipse, mes boutons s'affichent correctement, mais quand je crée un .JAR avec mon app, et que je la roule, tout fonctionne correctement sauf que les icones ne s'affichent pas dans les boutons!

    Si qqn peut m'aider, je l'en remercie
    Jean-Pierre

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Salut,

    Le méthode d'accès aux images à partir d'un jar n'est pas la même que pour un appli en class.
    Voir la FAQ Java pour cela: http://java.developpez.com/faq/java/...QUE_IMAGE_lire
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    OK mais mes images ne se trouvent pas sur le Net, elles sont dans le répertoire de base des packages, elles se retrouvent donc dans le répertoire racine du .JAR, voici mon code si ça peut aider à comprendre la situation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    btAchat = new JButton("Acheter",new ImageIcon("arrowG.gif"));
    ciao
    JP

  4. #4
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 103
    Points : 128
    Points
    128
    Par défaut
    Tu peux acceder au ressource contenu dans un jar avec la methode

    getResourceAsStream() depuis une instance de Class.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Class myClass = this.class;
     
    // pour lire un fichier jpg contenu dans le root du classpath, donc le jar aussi.
    InputStream in = myClass.getRessourceAsStream("/monimage.jpg");

    [c'est de mémoire , alors peut etre qu'il y a une boullette ]

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    OK, mais comment je fais pour récupérer l'image à partir du flux et la mettre dans une imageIcon?

    ciao
    Jean-Pierre

  6. #6
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 103
    Points : 128
    Points
    128
    Par défaut
    essaye un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Class myClass = this.class;
    InputStream in = myClass.getRessourceAsStream("/monimage.jpg"); 
    DataInputStream data = new DataInputStream(in);
    int len = data.available();
    byte [] buf = new byte[len];
    data.readFully(buf);
     
    ImageIcon ii = new ImageIcon(buf);
    Au pire, tu peux poser le fichier lut du jar sur le disque puis tu fais pointer celui ci dans ton ImageIcon. Genre rép. de travail.

    Enfin à tester ....
    Cordialement,

  7. #7
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Heu mais non. Il suffit de faire myClass.getResource("...") et de passer l'URL resultante au constructeur de l'ImageIcon. On peut aussi passer l'input stream a ImageIO.read() et l'image resultatnte a ImageIcon. Le plus simple reste la solution de getResource() et ImageIcon(URL).
    Romain Guy
    Android - Mon livre - Mon blog

  8. #8
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        /** Returns an ImageIcon, or null if the path was invalid. */
        public static ImageIcon createImageIcon(String path) {
            java.net.URL imgURL = MaClasse.class.getResource("/fr/packages/mesicones/"+path);
            if (imgURL != null) {
                ImageIcon ic = new ImageIcon(imgURL);
                return ic;
            } else {
                throw new Exception("Couldn't find file: " + path);
            }
        }
    à appeler comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIcon monIcone = createImageIcon("bouton.gif");
    Tu devrais pouvoir te débrouiller avec ça !
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  9. #9
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 103
    Points : 128
    Points
    128
    Par défaut
    effectivement , plus simple c'est difficile

    a+

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    OK merci beaucoup, j'ai vu où je devais regarder et ça marche

    Jean-Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier Jar contenant des images
    Par luchet dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 29/06/2009, 12h02
  2. chargement image dans un JAR retournant des NullPointerException
    Par Balbuzard dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 30/11/2008, 14h00
  3. [XML et JAR]Utiliser des XML dans un JAR
    Par fguitch dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/09/2006, 14h45
  4. [JAR] Utiliser des images
    Par Seiya dans le forum Général Java
    Réponses: 2
    Dernier message: 26/08/2005, 17h59
  5. [JAR] créer une archive .jar contenant des images.
    Par keny dans le forum Général Java
    Réponses: 2
    Dernier message: 14/03/2005, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo