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

Interfaces Graphiques en Java Discussion :

JLabel, ImageIcon et mis à jour


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut JLabel, ImageIcon et mis à jour
    Bonjour tout le monde.

    J'ai créé une interface graphique contenant un JLabel, qui en appuyant sur un bouton doit afficher une image ( JPG ).
    L'image est générée juste avant son intégration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.lang.Runtime p=java.lang.Runtime.getRuntime();
    p.exec(...); // creation ou modification de l'image, tjrs en .jpg
    monJlabel.setIcon(new ImageIcon("/mon/image.jpg"));
    Il faut bien comprendre que le chemin de l'image reste le meme.
    C'est le fichier de l'image lui meme qui change.

    Alors au premier click sur le bouton , ca m'affiche l'image.
    Mais à tous les clicks suivants c'est la meme image qui apparait, ALORS qu'elle a bien été modifiée !
    Il doit donc y avoir un espece de buffer, car sinon c'est impossible!
    J'ai essayer repaint() ca ne marche pas.
    et je souhaite maintenir l'affichage dans un JLabel.

    Merci à tous!

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Essaie un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monJLabel.setIcon( null );
    juste avant de reconstruire ton image.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal car ImageIcon(String) utiliser Toolkit.getImage() qui utilise un mécanisme de cache afin d'améliorer les performances.


    Il y a deux solutions :


    Sachant que ImageIO.read() est bloquant et lira l'image totalement avant de retourner une valeur (attention à ne pas bloquer l'EDT !), tandis que les images obtenu via le Toolkit sont chargé en tâche de fond (la méthode renvoi immédiatement une image "vide", qui sera mise à jour une fois chargé).


    a++

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Effectivement ImageIO était la classe adaptée !

    Il fallait deplus apres la modification de l'image, faire une petite pose pour laisser le p.exec faire son boulot proprement. (Thread.sleep(..) )

    Merci bcp pour ces précisions sur le fonctionnement de lecture d'image !
    Ciao!

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jazzero Voir le message
    Effectivement ImageIO était la classe adaptée !
    Attention à ne pas faire cela dans l'EDT



    Citation Envoyé par Jazzero Voir le message
    Il fallait deplus apres la modification de l'image, faire une petite pose pour laisser le p.exec faire son boulot proprement. (Thread.sleep(..) )
    Il serait mieux d'utiliser waitFor(), en prenant bien soin de fermer les flux s'ils ne sont pas utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	// On lance le process :
    	Process process = Runtime.getRuntime().exec("command");
    	try {
    		// On ferme les flux si on les utilise pas :
    		process.getInputStream().close();
    		process.getOutputStream().close();
    		process.getErrorStream().close();
    		// On attend la fin du process :
    		process.waitFor();
    	} finally {
    		// On détruit le process :
    		process.destroy();
    	}
    a++

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

Discussions similaires

  1. [MySQL] erreur php sur un formulaire de mis à jour
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 06/04/2006, 13h39
  2. Connaitre Nbre Enregistrements Mis à Jour
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 11h08
  3. récupérer les champs mis à jour
    Par xave dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 14h40
  4. pboblème de mis à jour dans une table
    Par koff10 dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/07/2005, 01h17

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