[Java/SWING] Probleme de Thread
Résolu/Fermé
Jeremy
-
25 avril 2005 à 08:49
Sthocs Messages postés 7 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 17 novembre 2008 - 17 nov. 2008 à 13:06
Sthocs Messages postés 7 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 17 novembre 2008 - 17 nov. 2008 à 13:06
A voir également:
- [Java/SWING] Probleme de Thread
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
- Java décompiler - Télécharger - Langages
21 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 10:41
25 avril 2005 à 10:41
ca fait quoi natStep() précisément car je ne connais pas ?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 11:15
25 avril 2005 à 11:15
mais encore... elle fait quoi cette fonctions importée ?
Dans le cadre d'un debugueur ARM,natStep execute ligne par ligne,( le 1 permettant de dire, ligne par ligne )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 11:36
25 avril 2005 à 11:36
Tu veux rafraichir ligne apres ligne ou simplement apres ton appel à natStep ?
je veux que le refresh se fasse apres chaque appel de nat step.
Pour le moment, java me fait les NUMBER_OF_STEP de natStep, et ensuite il fait tous les refresh .... donc c'est pas un refresh constant :s
Pour le moment, java me fait les NUMBER_OF_STEP de natStep, et ensuite il fait tous les refresh .... donc c'est pas un refresh constant :s
choubaka
Messages postés
39404
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
21 novembre 2024
2 102
25 avril 2005 à 13:40
25 avril 2005 à 13:40
salut
insère le refresh dans le code de ta méthode natstep à la fin
insère le refresh dans le code de ta méthode natstep à la fin
Ma methode natStep est une methode native, et depends d'un code C++ derriere.
Le code C++ ne peut donc pas acceder a la methode refreshControl.
private native void natStep(int numbSteps) ;
Le code C++ ne peut donc pas acceder a la methode refreshControl.
Je viens d'essayer de l'inserer au debut de la fonction refresh ( c'est du code pas propre je sais :p ) Mais ca ne fonctionne toujours pas, il fait d'abord les natStep, ensuite le refresh ... ce qui est ennuyeux :s
choubaka
Messages postés
39404
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
21 novembre 2024
2 102
25 avril 2005 à 14:10
25 avril 2005 à 14:10
Dans ce cas, tu crées une méthode du style "doNatStep(int numSted) "qui incluera la fonction natStep et la méthode refresh.
Dans ta boucle "For", tu fais appel à ta nouvelle méthode, ça devrait marcher...
Dans ta boucle "For", tu fais appel à ta nouvelle méthode, ça devrait marcher...
Ca ne fonctionne toujours pas ...
Il n'y a pas possibilité de le faire avec des thread ? par exemple, il fait le natStep dans un thread, et quand il a finit ( methode join() ) il fait le refresh ?
J'ai essayé, mais je n'ai pas reussit non plus, mais peut etre que j'ai pas les competences pour le faire :-D
Il n'y a pas possibilité de le faire avec des thread ? par exemple, il fait le natStep dans un thread, et quand il a finit ( methode join() ) il fait le refresh ?
J'ai essayé, mais je n'ai pas reussit non plus, mais peut etre que j'ai pas les competences pour le faire :-D
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 14:26
25 avril 2005 à 14:26
Ce n'est pas possible qu'il te fasse tout les machin nat en premier, puis ensuite tout les refresh, il faut que tu jette un oeil au fonctionnement de ta fonction natStep, elle doit fair'e un truc bien louche dans son code.
Il n'existe pas des mot clefs qui permette de forcer JAVA a faire du sequentiel ?
J'ai regardé natStep, je ne vois rien de "louche" dedans.
J'ai regardé natStep, je ne vois rien de "louche" dedans.
Avec des thread cela donne ca :
mon thread step :
pour NUMBER_OF_STEP = 1 ca marche, ( normal :p )
Mais lorsque j'ai NUMBER_OF_STEP > 1 il me leve une exception du type :
une idée ?
stepThread NST = new stepThread() ; for (i=0;i<NUMBER_OF_STEPS;i++) { refreshControl() ; NST.start() ; try{ NST.join(10) ; } catch (InterruptedException ie) {} }//End of for }
mon thread step :
class stepThread extends Thread { stepThread(){} public void run() { natStep(1) ; } }
pour NUMBER_OF_STEP = 1 ca marche, ( normal :p )
Mais lorsque j'ai NUMBER_OF_STEP > 1 il me leve une exception du type :
AWT-EventQueue-0" java.lang.IllegalThreadStateException
une idée ?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 15:14
25 avril 2005 à 15:14
C'est ton
try{
NST.join(10) ;
}
qui va pas, faut pas le mettre la. Ce type d'instruction est bien quand tu as plusieur thread, et que tu veux attende la fin de ceux-ci avant d'éxécuter la suite du code, auquek cas, tu met :
NST.joint(); tout simplement (sans le 10 quoi).
Par contre si tu veux afire dormir ce que tu peux faire, c'est un thread qui refresh, et l'autre qui te lance les natStep(1) ;
Tu lance les deux en même temps et tu leur dit de s'attendre pour continuer la suite du code :
Essay ca pour voir..
try{
NST.join(10) ;
}
qui va pas, faut pas le mettre la. Ce type d'instruction est bien quand tu as plusieur thread, et que tu veux attende la fin de ceux-ci avant d'éxécuter la suite du code, auquek cas, tu met :
NST.joint(); tout simplement (sans le 10 quoi).
Par contre si tu veux afire dormir ce que tu peux faire, c'est un thread qui refresh, et l'autre qui te lance les natStep(1) ;
Tu lance les deux en même temps et tu leur dit de s'attendre pour continuer la suite du code :
class refresh extends Thread { private int nbTour; refresh( int nbTour ){ this.nbTour = nbTour; } public void run() { for(int i=0;i<nbTour;i++) { refreshControl() ; try { sleep(100); } catch( Exception e ){ ; } } } } class natStep extends Thread { private int nbTour; natStep( int nbTour ){ this.nbTour = nbTour; } public void run() { for(int i=0;i<nbTour;i++) { natStep(1) ; try { sleep(100); } catch( Exception e ){ ; } } } } Et pour ton principal : netStep n = new netStep(NUMBER_OF_STEPS); refresh r = nes refresh(NUMBER_OF_STEPS); n.start(); r.start(); n.join(); r.join();
Essay ca pour voir..
Ca ne fonctionne toujours pas, le refresh n'est effectif qu'a la fin
J'ai oublié de préciser : le refreshControl modifie le GUI ( je travail avec SWING )
Donc peut etre que le refresh se fait bien en meme tmeps, mais la mise a jour du GUI ne se fait qu'a la fin ...
J'ai oublié de préciser : le refreshControl modifie le GUI ( je travail avec SWING )
Donc peut etre que le refresh se fait bien en meme tmeps, mais la mise a jour du GUI ne se fait qu'a la fin ...
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 15:44
25 avril 2005 à 15:44
En effet, si ca mais à jour le GUI, il faut voir s'il n'y a pas une méthode qui force celui-ci à se mette à jours.
Apres une journée de lutte ca marche enfin :p
Merci Kij.
En fait, le thread principal est l'interface swing elle meme.
Donc ma methode qui faisait la boucle for, je l'ai mise dans un thread a part et ca marche.
Encore merci :-)
Merci Kij.
En fait, le thread principal est l'interface swing elle meme.
Donc ma methode qui faisait la boucle for, je l'ai mise dans un thread a part et ca marche.
Encore merci :-)
Sthocs
Messages postés
7
Date d'inscription
vendredi 30 juin 2006
Statut
Membre
Dernière intervention
17 novembre 2008
6
17 nov. 2008 à 13:06
17 nov. 2008 à 13:06
Bonjour,
Désolé de faire remonter ce topic mais je viens de tomber dessus via Google et je voulais simplement mettre un lien très utile à propos de l'utilisation des Threads avec Swing. Il s'agit d'un article sur developpez.com : https://gfx.developpez.com/tutoriel/java/swing/swing-threading/
Comme ça si d'autres personnes tombent également dessus ils pourrons accéder directement à une explication plus complète :)
Désolé de faire remonter ce topic mais je viens de tomber dessus via Google et je voulais simplement mettre un lien très utile à propos de l'utilisation des Threads avec Swing. Il s'agit d'un article sur developpez.com : https://gfx.developpez.com/tutoriel/java/swing/swing-threading/
Comme ça si d'autres personnes tombent également dessus ils pourrons accéder directement à une explication plus complète :)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
25 avril 2005 à 17:31
25 avril 2005 à 17:31
Un p'tit clic pour dire que c fini !
manau1983
Messages postés
17
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
15 août 2008
10 avril 2008 à 22:15
10 avril 2008 à 22:15
svp , je suis en train de faire un projet de fin d'etude et je veux savoir comment fonctionner un thread entre l'execution de 2 interface j'instancie la première puis j'instancie la deuxième et je veux executer un thread
merci beaucoup
merci beaucoup