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 :

Actualiser image d'un JLabel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut Actualiser image d'un JLabel
    Bonjour à tous, dans mon application je souhaite que lors d'un clique sur un nom contenu dans ma JList, le JLabel qui se trouve à coté et qui est en faite une image s'actualise en fonction du nom sélectionné.

    Jusqu'à maintenant je n'ai aucun problème pour faire cela dans le cas ou l'image existe. Je m'explique, imaginons que je clique sur Jean et que j'ai bien une image Jean.jpg alors l'image en question s'affiche, puis si je clique sur Dupond, l'image Dupond.jpg s'affiche bien, mais mon problème se trouve dans le faite que je veux que lors d'un clique sur un nom une image ce crée (j'arrive parfaitement à créer l'image désiré), mais la problème l'image à beau être créé, etc... L'appli ne veux pas m'actualiser l'affichage et m'affiche un vide comme si l'image n'existait pas

    Un peu de code :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public PanelLocalise(Pays lePays, String[] tabCommunes){
    		arrayCommunes = tabCommunes;
     
    		//La liste
    		listCommunes = new JList(arrayCommunes);
    		listCommunes.addListSelectionListener(this);
            JScrollPane listScrollPane = new JScrollPane(listCommunes);
     
            //L'image
            picture = new JLabel();
            JScrollPane pictureScrollPane = new JScrollPane(picture);
     
            //Crée un split pane avec deux pane scrollable.
            //code supprimer pour rendre plus lisible...
            this.add(splitPane);
        }
     
        //Listens du JList
        public void valueChanged(ListSelectionEvent e) {
            JList listCommunes = (JList)e.getSource();
            updateLabel(arrayCommunes[listCommunes.getSelectedIndex()]);
        }
     
        //Actualise l'image
        protected void updateLabel (String name) {
        	ImageIcon icon = createImageIcon("images/carteFrance.gif");
            picture.setIcon(icon);
            if  (icon != null) {
                picture.setText(null);
            }
        }
     
     
        /** Retourne un ImageIcon, ou null si le chemin n'est pas valide. */
        protected static ImageIcon createImageIcon(String path) {
           java.net.URL imgURL = PanelLocalise.class.getResource(path);
            if (imgURL != null) {
    //        	try {
    //				BufferedImage image = ImageIO.read(imgURL);
    //				Graphics2D g2d = image.createGraphics(); // on récupère le contexte graphique de la BufferedImage   
    //				g2d.setColor( Color.red ); // on met l'état de couleur rouge à la BufferedImage
    //				g2d.fillOval( 30, 30, 10, 10 ); // on dessine un cercle de centre x=30 y=30 et de rayon=100
    //				g2d.dispose(); //on libère la mémoire utilisée pour le contexte graphique
    //				ImageIO.write(image, "gif", new File("src/images/carteFrance.gif"));
    //			} catch (IOException e) {
    //				// TODO Auto-generated catch block
    //				e.printStackTrace();
    //			}
                return new ImageIcon(imgURL);
            }
        }
    J'ai supprimer le code superflu, j'espère que quelqu'un pourra m'aider
    Si il manque quelque chose n'hésitez pas à demander

  2. #2
    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,

    Je ne suis pas certain, de même si c'est bien le problème que tu rencontre, mais il me semble que java ne recharge pas les ImageIcon déjà chargés.
    J'ai comme souvenir que tu peux explicitement demandé une actualisation avec la méthode flush() de Image.
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ImageIcon icon = new ImageIcon(filename);
    Image image = icon.getImage();
    image.flush();
    icon = new ImageIcon(image);
    Si cela peux t'aider...

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 174
    Par défaut
    Je pense que ça sera mieux si t'enleve ton label avec remove() ensuite tu l'a crée à nouveau et tu utilise l'actualisation du panneau avec revalidate().

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    Merci pour vos réponse, finalement je suis passer par un BufferedImage puis un drawImage qui me permet d'afficher l'image modifier directement, merci bcp à vous tout de même

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

Discussions similaires

  1. probleme actualisation image apres publipostage
    Par popofpopof dans le forum Word
    Réponses: 38
    Dernier message: 18/05/2025, 11h06
  2. Problème d'affichage d'image dans un JLabel
    Par Ganymede dans le forum Composants
    Réponses: 1
    Dernier message: 11/05/2009, 15h37
  3. [GD] actualiser image puis la uploader
    Par debutanteVB.NET dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/01/2009, 16h18
  4. [VB-A] Actualiser image avec 1 mvt de souris
    Par alex_95 dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/01/2007, 09h25
  5. image sur une jLabel
    Par inseaiste dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 06/07/2006, 14h03

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