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

Composants Java Discussion :

[JLabel] Changement de l'icon


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut [JLabel] Changement de l'icon
    Salut
    J'ai de problemes changer l'icon d'un label.A vrai dire j'utilise un jLabel pour visualiser des images.J'ecris du code qui ressemble a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	                JLabel label = new JLabel();
    	                label.setIcon(new ImageIcon("image.jpg"));
    et c'est bon ca merche.Maintenant j'ai un bouton qui genere une image et qui doit changer l'image de label.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	                // Gereration de l'image
    	                label.setIcon(new ImageIcon("image.jpg"));
    	                label.repaint();
    mais l'image ne se change pas

    Je suis sur que l'image genere change car au meme moment je le vois dans le browser (nautilus FC4).Par contre j'ai mis encore un bouton qui met a zero le label par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	                label.setIcon(null);
    	                label.repaint();
    et si maintenant j'essaye de changer l'image - ca change
    Est-ce qu'il a quelqu'un qui peux me dire comment resoudre ce probleme ?
    Si vous voulez je peux vous montrer mon code
    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Je ne comprends pas bien ton souci. Chez moi, le code ci-dessous fonctionne, même sans "repaint". Peut-être dois-tu poster un peu plus de code ?

    Nicolas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.awt.*;
    import javax.swing.*;
     
    public class TestIconJLabel {
     
        public static void main(String[] args) {
     
            // construction de la JFrame
            JFrame myFrame = new JFrame();
            myFrame.setSize(300,300);
            myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JLabel label = new JLabel();
            myFrame.getContentPane().add(label);
            myFrame.setVisible(true);
     
            // test du changement d'icône dans le JLabel
            while (true) {
                label.setIcon(new ImageIcon("C:\\...\\image1.jpg"));
                try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); }
                label.setIcon(new ImageIcon("C:\\...\\image2.jpg"));
                try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); }
            }
        }
    }
    Fonctionnement : lancer le programme, les deux images alternent toutes les demi-secondes.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Si j'ai bien compris tu utilise le meme fichier image a chaque fois mais c'est le fichier en lui-meme qui est changé, non?

  4. #4
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    C'est exactement le cas j'utilise le meme fichier que je change et je l'enregistre avant de changer l'icon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     ...
     FileOutputStream out = new FileOutputStream("img.jpg");
     ...
     JPEGEncoder.encode(data,1,out);
     ...
     out.flush();
     out.close();
     ...
     // Maintenant on change l'icon
     label.setIcon(new ImageIcon("img.jpg"));

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    J'ai une hypothese mais ce n'est qu'une hypothese :
    -l'affichage est correct,
    -le chargement de l'image "bug" car c'est le meme nom.
    Etant donné que la jvm fais pas mal de chose, il serait interessant de voir si quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon("img.jpg");
    l'image est effectivement chargé à partir de la peripherique de stockage et non à partir d'une memoire intermediaire propre a la jvm.

    J'ai fait un tour sur sun et bien que je n'ai pas tout lu dans le tuto How to use Icons, un paragraphe semble me donner raison:
    If you write a program without caching image icons, it may appear that some implicit image caching is going on within the Java platform. However, this is a side effect of the implementation and is not guaranteed. If your program uses one image in many places in its GUI, you can create the image icon once and use the same instance multiple times.
    source : http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html#efficiency

  6. #6
    Membre expérimenté Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Par défaut
    TabrisLeFol tu as raison.J'ai resolu le probleme en generant chaque fois un nouveau nom du fichier et un nouvel image et en supprimant l'ancien image.
    Peut-etre c'est pas la solution la performante mais ca marche et pour moi ca me suffit pour l'instant

    Je vous remercie pour vos reposses

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

Discussions similaires

  1. [WD12] Changement de l'icone de l'installation
    Par bruce207 dans le forum WinDev
    Réponses: 2
    Dernier message: 10/08/2009, 10h08
  2. Réponses: 2
    Dernier message: 30/05/2008, 20h31
  3. pb lors de changement de l'icone de mon application
    Par foufoulina2007 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 04/09/2007, 08h27
  4. changement d'une icone dans un button
    Par Arnaud Malabeux dans le forum MFC
    Réponses: 7
    Dernier message: 16/05/2006, 12h40
  5. Changement de l'icone d'une appli sous kdevelop
    Par vedder dans le forum Linux
    Réponses: 3
    Dernier message: 06/02/2003, 14h16

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