Comment rafraîchir une fenêtre ?

GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005 - 1 oct. 2005 à 13:57
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005 - 7 oct. 2005 à 09:29
Bonjour,

J'ai un bout de codes qui doit faire apparaître successivement un dessin toujours à la même place : Le dessin précédent laisse la place un autre en fonction d'une action sur un bouton.

Depuis une classe Tester, passe en argument à une classe Photo, ne nom de l'image à dessiner si ce dernier existe, et le message pour dire que le dessin n'existe pas.
Ainsi dans Tester, j'ai

if(photoEtudiant!=null) container.add(new Photo(photoEtudiant,null), contraintes);
else container.add(new Photo(null, message),contraintes);

le code Photo se présente ainsi :

import javax.swing.*;
import java.awt.*;


class Photo extends JPanel
{
String nomPhoto=null;
String message=null;
Image image=null;
static int i=0;


public Photo(String _nomPhoto, String _message)
{
MediaTracker trackerPhoto=null;


nomPhoto=_nomPhoto;
message=_message;



if(nomPhoto!=null)
{
image = Toolkit.getDefaultToolkit().getImage(nomPhoto);
trackerPhoto = new MediaTracker(this);


trackerPhoto.addImage(image,0);
try
{
trackerPhoto.waitForID(0);
}
catch(InterruptedException exception)
{
System.out.println("Echec du pisteur");
System.exit(0);
}
}


}


public void paintComponent(Graphics g)
{
super.paintComponent(g);


if(nomPhoto!=null) g.drawImage(image, 0, 0, getWidth(), getHeight(), this);


else
{
Graphics2D g2 = (Graphics2D)g;


Font fonte = new Font("Century Gothic",Font.PLAIN,14);
g2.setFont(fonte);
g2.setPaint(Color.blue);
g.drawString(message,0,10);
}
}
}

mahleureusement, c'est toujours la même photo qui s'affiche (pas de rafraîssiment de la fenêtre). Comment et où dois-je utiliser la procédure repaint() afin d'avoir un raifraissement de la fenêtre ?

Merci par avance pour vos propositiosn de solution.

14 réponses

kitiara999 Messages postés 6 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 23 octobre 2008
1 oct. 2005 à 21:55
FacesContext.getCurrentInstance().renderResponse()



ca devrait marcher....
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 oct. 2005 à 08:30
verifie que photoEtudiant ne fait pas toujour reference a la meme image...

++

GodConan
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
2 oct. 2005 à 12:50
Bonjour et merci pour votre proposition.

Je ne sais pas utiliser FacesContext.getCurrentInstance().renderResponse()
Pourriez-vous me donner un exemple d'utilisation avec quelques lignes de codes.

GuyJava
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
2 oct. 2005 à 12:55
Bonjour et merci pour vos nombreuses propostions.

Avec un System.out.println(photoEtudiant); je suis sûr que le nom de l'image change.

GuyJava
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 oct. 2005 à 21:50
oui en effet mais es tu sure que l'IMAGE change ?!!

GodConan
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
3 oct. 2005 à 12:16
Bonjour,

Pourriez-vous me préciser que signifie "IMAGE change" ?

GuyJava
0
kitiara999 Messages postés 6 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 23 octobre 2008
3 oct. 2005 à 21:29
le nom de l'image peut changer mais est-ce la meme image qui porte deux noms different??.. ca peut paraitre ridicule...


ensuite, le repaint(), tu n'a qua le placer apres avois charger ta nouvelle image et le FacesContext.getCurrentInstance().renderResponse() c'est la meme chose malgres que finalement je ne sois pas sure que ca fonctionne....

repaint tu n'a qu'a écrire la ligne en rose:

public void paintComponent(Graphics g)
{
super.paintComponent(g);


if(nomPhoto!=null) g.drawImage(image, 0, 0, getWidth(), getHeight(), this);


else
{
Graphics2D g2 = (Graphics2D)g;


Font fonte = new Font("Century Gothic",Font.PLAIN,14);
g2.setFont(fonte);
g2.setPaint(Color.blue);
g.drawString(message,0,10);
}
repaint();
}

1- verifie tes deux images,
2- quand tu dit new Photo(null, message),contraintes);, il me semble que tu ne fais rien dans ton code pour gérer le cas où l'image est null, fais afficher une image bidon juste pour tester ce bout de code
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
4 oct. 2005 à 01:22
oulala malheureu... ;o) jamais de repaint() dans la methode paint() .... ;o)

GodConan
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
4 oct. 2005 à 12:45
Bonjour,

Je suis de votre avis qu'il ne faut pas invoquer la procédure repaint() dans paintComponent.


Toutefois, comment expliquez-vous et c'est peut être là, la raison du non rafraîchissement de mon écran, qu'au cours d'une même occrurrence que dans le constructeur Photo(), la variable nomPho vaux pierre.jpg et que dans la procédure paintComponent(), nomPhoto comporte toujours le nom de la première photo lors de l'ouverture de la fenêtre ?

Dans ces conditions, image est t-elle réellement mis à jour ? Comment peut t-on vérifier les différentes valeurs de image ?

Merci
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
4 oct. 2005 à 12:51
Bonjour,

Toutes mes photos sont différentes.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
4 oct. 2005 à 18:18
tu as surment un probleme de referencement essaye de tracer ton programme avec un debugueur ...
ca devrai t apparaitre ...

verifie si tu a des reference static si elle doivent vraiment l etre.. ;o) etc..

GL

GodConan
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
4 oct. 2005 à 22:26
J'ai certes des variables static mais ce mot clé ne porte pas sur la variable nomPhoto.
Par ailleurs, j'utilise TextPad comme compliteur, qui ne dispose pas débugeur.

GuyJava
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 oct. 2005 à 06:39
et bien utise un EDI comme Eclipse et tu veras ce sera bcp moin penible ... ;o)

A priori ton problem ne provient pas du morceau de code que tu as fournis...

GL

GodConan
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
7 oct. 2005 à 09:29
Bonjour,

Merci pour l'ensemble de vos propositions.

Je vais rechercher la solution à ce propblème mais j'avoue perdre mon latin !!!

GuyJava
0
Rejoignez-nous