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

AWT/Swing Java Discussion :

Charger une icone pour une application


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut Charger une icone pour une application
    Bonjour à tous.

    J'essaye de changer l'icône par défaut (la tasse de café) d'une application faite sous Net Beans.
    Dans le constructeur de la FrameView, après l'appel à initComponents(), je place le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            JFrame mainFrame = PointeuseApp.getApplication().getMainFrame();
            String imgPath = System.getProperty("user.dir") + "/img/pointeuse.png";
     
            File f=new File(imgPath);
            boolean ok = f.isFile(); // contrôle : ok == true => le fichier a bien été trouvé
     
            Image ic = Toolkit.getDefaultToolkit().createImage(imgPath);
            mainFrame.setIconImage(ic);
    Résultat : rien, j'ai toujours la tasse de café.

    Si je place un point d'arrêt pour analyser la variable ic, je tombe sur des propriétés curieuses :
    ic.width & ic.height = -1
    ic.properties = null;
    etc.

    Ceci explique sans doute cela, mais qu'ai-je fait de travers ?

    PS : en essayant une autre image (au format .bmp) j'ai le même résultat...

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 704
    Par défaut
    Il y a visiblement un problème au chargement de l'image.
    Je ne connais pas très bien le fonctionement de Toolkit.getDefaultToolkit().createImage(). J'ai plutôt l'habitude de les charger mes images via la classe ImageIcon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mainFrame.setIconImage(new ImageIcon(imgPath).getImage())
    Garde l'icone au format png. Il est bien géré par Java, contrairement au bmp.

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Image ic = Toolkit.getDefaultToolkit().createImage(imgPath); n'est pas en cause, cela fonctionne très bien, y compris pour l'icone d'une fenêtre, car je l'ai déjà utilisé.

    Ta variable ok revoit-elle true ?
    As-tu éditer le contenu de imgPath dans la console pour verifier que le chemin est correct ?

    Je suppose que tu es sous Linux car "/img/pointeuse.png" ne correspond pas a un chemin Windows.

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    OK, problème réglé !

    En résumé :

    - ma variable ok vaut true en effet
    - je suis sous Window$ Vi$ta mais la JVM traduit les path (ce qui vaut mieux pour une VM qui doit rendre les applis indépendantes de la plate-forme )
    - l'utilisation du Toolkit est correcte en effet. La réponse d'Uther m'a tout de même mis sur la piste car... ça ne marchait pas non plus avec une ImageIcon ! L'image était bien chargée, les propriétés width etc. étaient correctes, mais on ne voyait toujours pas l'icône.

    Après quelques tâtonnements, il apparait que le code est mal placé. Il ne faut pas installer l'icône dans le constructeur de la JFrame comme je le faisais, du moins pas avec un projet préparé par l'IDE Net Beans. Dans cet environnement, il faut placer les lignes de code
    - soit dans la méthode monAppli.startup() après l'appel à show(maVue)
    - soit dans la méthode monAppli.configureWindow(...).

    Notons toutefois que même avec le code bien placé, si je passe par le Toolkit j'ai toujours des propriétés à -1/null pour ma variable img alors qu'elles ont des valeurs plus crédibles avec une ImageIcon.getImage(). Pourquoi ? Mystère...

    Quoi qu'il en soit, merci pour vos réponses

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

Discussions similaires

  1. Une icone pour mon application
    Par Lord Yu dans le forum Développement iOS
    Réponses: 3
    Dernier message: 12/11/2010, 15h03
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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