Rafraichir/Mettre à jour image dans JPanel [Résolu]

Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
- - Dernière réponse : cs_neone
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Dernière intervention
7 mars 2011
- 4 juin 2007 à 18:28
Bonjour à tous,

j'aimerais savoir comment faire pour mettre à jour l'image affichée dans un JPanel.
En effet, je télécharge une image sur internet, et elle change toutes les secondes. J'aimerais donc la mettre à jour dans le JPanel.
J'ai lu plein de posts à ce sujet, dont les réponses sont toujours de faire revalidate ou repaint mais ca ne marche pas...
J'ai donc besoin de votre aide !

Voila actuellement le code que j'utilise pour afficher l'image, suite à un clic de souris:

pan.getGraphics().drawImage(getToolkit().getImage("capture.jpg"), 0, 0,this);

Comment faire??

Merci !

Philippe
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
3
Merci
Salut,

au pire arrete de te stresser avec les JPanel et mets ton image dans un jlabel et te prends pas la tete avec les repaints ils seront fait auto des que tu changera l'image...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de Twinuts
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,

tu as essayé la methode pan.repaint();

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
0
Merci
Salut,

tout d'abord, merci pour ta réponse.

Quand je fais ca:
pan.getGraphics().drawImage(getToolkit().getImage("capture.jpg"), 0, 0,this);
pan.repaint();

l'image apparait une fraction de seconde et disparait... Impossible donc de vérifier si ca marche...

Comment faire? Faut t-il que je redéfinisse la méthode repaint()? Si oui, je mets quoi dedans?? (J'ai essayé un super.paintAllComponents(getGraphics()) mais ca revient au même...

Merci
Commenter la réponse de z980x
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Dernière intervention
29 janvier 2010
0
Merci
ta plein de code qui te permettent de redefinir la classe JPanel pour y afficher une image
dans un des mien pour le package de creation de map va voir du coter swing ta une classe JPanelImage il me semble

ou alors une solution qu'avaisproposer twinuts c'est d'utiliser un JLabel

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Commenter la réponse de sheorogath
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
0
Merci
Salut,

pourrais tu me donner un exemple de code pour la redéfinition de la classe JPanel?
Pour le JLabel, je viens d'essayer, et ca fait exactement pareil qu'avec le panel...

Merci

Philippe
Commenter la réponse de z980x
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Dernière intervention
29 janvier 2010
0
Merci
/*************************/


import java.awt.Graphics;
import java.awt.Image;


import javax.swing.JPanel;


public class JPanelImage extends JPanel {
 public Image img;


 public void setImage(Image img) {
  this.img = img;
  repaint();
 }


 public void paintComponent(Graphics g) {
  super.paintComponent(g);
  if (img != null) {
   g.drawImage(img, 0, 0, null);
  }
 }


 public Image getImage() {
  return img;
 }
}

/*****************/

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Commenter la réponse de sheorogath
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
0
Merci
Merci pour le code, mais ca marche toujours pas...

pan.setImage(getToolkit().getImage("capture.jpg"));

J'ai même essayé: pan.setIcon(new ImageIcon("capture.jpg")); (en le mettant en JLabel), mais rien n'y fait !

Est ce que c'est possible que le code getToolkit().getImage("capture.jpg") ne renvoie pas un bon truc??? Je voudrais dire par la, si l'image a le même nom, il ne fait pas la mise à jour?

Merci à vous

Philippe
Commenter la réponse de z980x
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Dernière intervention
29 janvier 2010
0
Merci
ben ouai si l'image n'existe pas ca va pas marcher ...

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Commenter la réponse de sheorogath
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
0
Merci
Non non, elle existe bel et bien, ca c'est sur... Je la retélécharge à chaque clic de souris. (Et elle change, ca c'est sur), mais est ce que le getToolkit().getImage("capture.jpg") recharge vraiment l'image???

Merci

Philippe
Commenter la réponse de z980x
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
26 juillet 2007
0
Merci
Ah... Je l'ai fait avec un JLabel... et en fait, le seul truc qui fonctionne, c'est en changeant le nom du fichier... J'ai changé le nom du fichier en mettant l'heure et la date, et la ca va...

Merci bcp !

Philippe
Commenter la réponse de z980x
Messages postés
96
Date d'inscription
mercredi 23 novembre 2005
Dernière intervention
7 mars 2011
0
Merci
salut,
j'ai pas bien pigé tu ve raffraichir l'image ou changer d'image suite a une action??.
si je comprend bien je pe t'aider boncourage
Commenter la réponse de cs_neone

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.