AQUARIUM 2D AVEC DOUBLE-BUFFERING ET EN UTILISANT UNIQUEMENT LES METHODES DU CON

Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009 - 22 mai 2009 à 00:47
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009 - 29 mai 2009 à 09:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50039-aquarium-2d-avec-double-buffering-et-en-utilisant-uniquement-les-methodes-du-contexte-graphique-paint-et-update-d-un-jpanel

Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009
29 mai 2009 à 09:19
Merci bien de ton aide et de tes conseils UHRAND, j'y vois plus clair a present. Je me remet au travail le plus vite possible afin d'offrir a JavaFr ces sources au plus vite.
Cordialement.
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
29 mai 2009 à 03:20
Effectivement, si on utilise un Timer pour chaque poisson, ce n'est plus la peine d'utiliser une classe qui hérite de Thread ou de classe implémentant l'interface Runnable.
Aussi, si chaque poisson a sa propre vitesse, il sera en effet possible pour l'utilisateur final de modifier la vitesse de chaque poisson. Il peut par exemple indiquer le numéro du poisson et le "delay" a appliquer à son Timer (Timer#setDelay);
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009
29 mai 2009 à 01:44
Merci bien pour tes lumieres UHRAND. Je vais essayer ta solution des que j'aurais un peu de temps. Mais juste une petite precision, si on utilise un Timer pour chaque poisson, ce n'est plus la peine d'utiliser une classe qui herite de Thread ou de classe implementant l'interface Runnable. Est ce que je me trompe ?
Par ailleurs, si chaque poisson a sa propre vitesse (eventuellement un random) sera t'il possible pour l'utilisateur final de modifier la vitesse de chaque poisson ? Je ne vois pas trop comment faire...
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
29 mai 2009 à 00:54
Si "fish" hérite de "JLabel", nous pouvons le déplacer le poisson avec setLocation et adapter l'image par setIcon. Pas besoin alors de paintComponent, sauf pour l'image de fond. Nous pouvons démarrer un javax.swing.Timer pour chaque poisson, comme ça chacun peut nager à une vitesse différente.
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009
22 mai 2009 à 00:47
Un petit commentaire ?
J'ai un soucis, a chaque fois que l'utilisateur definit le nombre de poissons, on arrete le thread avec :

public void stop() {
thread.interrupt();
runOK = false;
}

puis on vide le vecteur "fishes", et on le reremplit avec le vecteur avec le nombre de poissons desires.

Le probleme est qu'a chaque fois que redemarre le thread avec:

public void start() {
thread = new Thread(this);
thread.start();
runOK = true;
System.out.println("nombre de thread : " + Thread.activeCount());
}

A chaque fois le nombre de thread augmente et la vitesse des poissons augmente, je suis oblige de multiplier le "sleeptime", qui definit le temps d'attente en milliseconde du thread, par le nombre de nouveaux thread. Comment faire pour tuer un thread ou tout simplement ne pas en creer de nouveaux ?
Merci d'avance
Rejoignez-nous