Image qui n'apparait pas quand je veux

cs_bibe Messages postés 27 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 12 mars 2004 - 14 mars 2003 à 01:01
cs_raff Messages postés 182 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 5 janvier 2004 - 14 mars 2003 à 06:50
Bonjour,
Je voudrais faire une classe qui me fasse apparaitre une image dans mon applet.
Cette image n'apparait que quand j'appelle la methode repaint(5000), au bout de 5 seconde, ou si j'enlève repaint() l'image n'apparait que si j'iconifie ma fenêtre et que j'agrandi ma fenêtre à nouveau.
Si je fais cela c'est qu'en suite je voudrais appelé cette classe à l'aide d'un thread qui controle toute les 5 secondes un fichier texte sur un serveur, et suivant le resultat, (3 possibilitées) je change mon image.

Si quelqu'un pouvait m'aider.
Merci d'avance.

Voici mon code.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

class Essai extends Applet{
private Image image;
String nomImage = "alfa.gif";
Logo l;
public void init(){

this.setSize(250,70);
this.setLayout(null);
l = new Logo(nomImage);
l.setBounds(70,70,50,20);
add(l);
setVisible(true);

}

public class Logo extends Canvas{
public Logo(String fileName) {
image = getImage(getCodeBase(),"images/"+fileName);

}
public void paint(Graphics graphics) {
graphics.drawImage(image, 0, 0, null);
l.repaint(5000);

}
}
}
BIBE
PS: ca fait deux jours que je suis la dessus, j'suis vert. %-6

1 réponse

cs_raff Messages postés 182 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 5 janvier 2004 3
14 mars 2003 à 06:50
ben là tout ce que tu fais c'est d'appeler une fois la méthode paint() lors de applet.start() et puis tu appelles immédiatement applet.repaint() et puis plus rien....
bon alors il faut que tu implementes tout de suite un thread ou à tout le moins un timer afin d'appeller repaint() dans une méthode à part. Tiens, vas voir ma dernière source si tu as besoin d'un exemple...ça à l'air compliqué mais en fait c'est plutôt simple:

il s'agit d'implémenter la classe Runnable....puis de définir la méthode run de l'interface Runnable, et enfin de créer un thread lors du chargement de l'applet, exemple :

Thread mon_thread;

public void init() {
mon_thread = new Thread(this);
mon_thread.start();
}

//ceci fait demarrer le thread et appeler la méthode run()

public void run() {

while (mon_thread != null) {
repaint()
mon_thread.sleep(5000)
}
}

//tu peux ailleurs dans ton code arrêter le thread tout simplement comme ceci :

public void stop_thread() {
mon_thread = null;
}

si t'as besoin de plus de renseignement, vas voir ma source et puis si t'as des questions n'hésite pas !
0
Rejoignez-nous