[Java - applet] paint() dans thread
ouckileou
Messages postés
16
Statut
Membre
-
michaelknight00 Messages postés 57 Statut Membre -
michaelknight00 Messages postés 57 Statut Membre -
Bonjour à tous
voilà j'ai implémenté un algo génétique, pour le problème du voyageur de commerce
des points, et on cherche le plus court chemin pour passer par tous ces points
bref ça ça marche, mais j'aimerai bien afficher en temps réel le meilleur chemin trouvé à un instant T.
J'ai donc ma classe Genetique qui fait toutes les manipulations de recherche, et ma classe principale AppliGenetique, une applet, censée afficher tout ça
voici le code de celle-ci :
j'ai viré plein de trucs car tout marche à l'exception d'une chose donc je n'ai gardé que la structure
problème : bien que j'appelle la méthode repaint() dans mon thread, donc théoriquement en permanence, l'affichage ne se fait qu'à la fin, qu'une fois !
vous voyez que j'ai mis des traces dans paint() et run()
la méthode chercherSolution() affiche des infos une fois qu'elle a terminé.
J'ai donc dans la console :
[console]
run()
run()
run() //... etc ( ce qui prouve que mon thread tourne)
les infos renvoyées par chercherSolution()
et ensuite : paint() // -> mon chemin est affiché
[console]
alors que je voudrais avoir
[console]
run()
paint()
run()
paint()
run()
paint() //... etc
les infos renvoyées par chercherSolution()
et un dernier paint()
[console]
alors il y a surement une bonne raison à ça mais là je ne vois pas du tout donc si quelqu'un peut m'aiguiller ce serait très sympa
j'ai essayé plusieurs combinaisons, placer dans start(), dans init()...
j'avoue que le dessin en Java j'ai un peu de mal...
merci d'avance :)
voilà j'ai implémenté un algo génétique, pour le problème du voyageur de commerce
des points, et on cherche le plus court chemin pour passer par tous ces points
bref ça ça marche, mais j'aimerai bien afficher en temps réel le meilleur chemin trouvé à un instant T.
J'ai donc ma classe Genetique qui fait toutes les manipulations de recherche, et ma classe principale AppliGenetique, une applet, censée afficher tout ça
voici le code de celle-ci :
j'ai viré plein de trucs car tout marche à l'exception d'une chose donc je n'ai gardé que la structure
package genetiques;
import org.jdom.*;
//...etc
public class AppliGenetique extends Applet implements Runnable {
private Genetique genetique;
private Carte carte;
private Thread tr;
public void init() {
chargerCarte("../structure.xml");
genetique = new Genetique(carte);
// création du thread qui va rafraichir l'applet
if (tr == null) {
try { tr = new Thread(this); }
catch (Exception e) { }
}
}
// démarrage de l'applet
public void start() {
tr.start(); // démarrage du thread
genetique.chercherSolution(); // lancement de la recherche par algo génétique
tr.stop();
}
// affichage des points de la carte et des chemins qui les relient
public void paint(Graphics g) {
System.out.println("paint();");
// affichage des points
// affichage des chemins
}
public void run() {
while (true) {
System.out.println("run();");
try { this.repaint(); }
catch(Exception e){ }
}
}
// crée la carte depuis le XML
public void chargerCarte(String fichier) {final org.jdom.Document document_loc;
// corps de la méthode
}
}
problème : bien que j'appelle la méthode repaint() dans mon thread, donc théoriquement en permanence, l'affichage ne se fait qu'à la fin, qu'une fois !
vous voyez que j'ai mis des traces dans paint() et run()
la méthode chercherSolution() affiche des infos une fois qu'elle a terminé.
J'ai donc dans la console :
[console]
run()
run()
run() //... etc ( ce qui prouve que mon thread tourne)
les infos renvoyées par chercherSolution()
et ensuite : paint() // -> mon chemin est affiché
[console]
alors que je voudrais avoir
[console]
run()
paint()
run()
paint()
run()
paint() //... etc
les infos renvoyées par chercherSolution()
et un dernier paint()
[console]
alors il y a surement une bonne raison à ça mais là je ne vois pas du tout donc si quelqu'un peut m'aiguiller ce serait très sympa
j'ai essayé plusieurs combinaisons, placer dans start(), dans init()...
j'avoue que le dessin en Java j'ai un peu de mal...
merci d'avance :)
A voir également:
- [Java - applet] paint() dans thread
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Paint net - Télécharger - Dessin & Illustration
- Waptrick java voiture - Télécharger - Jeux vidéo
- Tux paint - Télécharger - Dessin & Illustration