AQUARIUM 2D AVEC DOUBLE-BUFFERING ET EN UTILISANT UNIQUEMENT LES METHODES DU CON
Cornellus1985
Messages postés22Date d'inscriptiondimanche 26 avril 2009StatutMembreDernière intervention 7 juillet 2009
-
22 mai 2009 à 00:47
Cornellus1985
Messages postés22Date d'inscriptiondimanche 26 avril 2009StatutMembreDerniè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.
Cornellus1985
Messages postés22Date d'inscriptiondimanche 26 avril 2009StatutMembreDerniè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és491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 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és22Date d'inscriptiondimanche 26 avril 2009StatutMembreDerniè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és491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 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és22Date d'inscriptiondimanche 26 avril 2009StatutMembreDerniè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
29 mai 2009 à 09:19
Cordialement.
29 mai 2009 à 03:20
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);
29 mai 2009 à 01:44
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...
29 mai 2009 à 00:54
22 mai 2009 à 00:47
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