Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

[Java/SWING] Probleme de Thread

Jeremy, le lundi 25 avril 2005 à 08:49:03 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit soucis avec javax.
J'ai un programme comme ca :


for (i=0;i<NUMBER_OF_STEPS;i++)
	{
			natStep(1) ;
  		refreshControl();
	}	
			


le probleme c'est qu'il fait d'abord tous les natStep(1) et ensuite, il fait le refresh qu'a la fin.

Donc j'avais pensé en alternatif a faire un thread de raffraichissement, et ca marche niquel. Le probleme, c'est que le refresh nedoit s'executer que lorsque chaque natStep(1) se fait, et non pas toutes les 30 millisecondes par exemples ( le temps ne doit dependre uniquement du temps d'execution de natStep(1)
Donc ma question est :
Est il possible de dire explicitement a JAVA que je veux attendre la fin du natStep(1) pour executer le refreshControl ?

Merci d'avance :)

1

kij_82, le lundi 25 avril 2005 à 10:41:03

Ca fait quoi natStep() précisément car je ne connais pas ? ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

2

Jeremy, le lundi 25 avril 2005 à 11:04:57

C'est une fonction interne a mon programme.
Elle execute une fonction C importée :p

Répondre à Jeremy

3

kij_82, le lundi 25 avril 2005 à 11:15:40

Mais encore... elle fait quoi cette fonctions importée ? ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

4

Jeremy, le lundi 25 avril 2005 à 11:34:03

Dans le cadre d'un debugueur ARM,natStep execute ligne par ligne,( le 1 permettant de dire, ligne par ligne )

Répondre à Jeremy

5

kij_82, le lundi 25 avril 2005 à 11:36:25

Tu veux rafraichir ligne apres ligne ou simplement apres ton appel à natStep ? ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

6

Jeremy, le lundi 25 avril 2005 à 12:21:54

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

Répondre à Jeremy

7

choubaka, le lundi 25 avril 2005 à 13:40:16

Salut

insère le refresh dans le code de ta méthode natstep à la fin Chouba,
Pochard d'assaut .. 

Répondre à choubaka

8

Jeremy, le lundi 25 avril 2005 à 13:59:35

Ma methode natStep est une methode native, et depends d'un code C++ derriere.

    private native void natStep(int numbSteps) ; 


Le code C++ ne peut donc pas acceder a la methode refreshControl.

Répondre à Jeremy

9

Jeremy, le lundi 25 avril 2005 à 14:04:48

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

Répondre à Jeremy

10

choubaka, le lundi 25 avril 2005 à 14:10:25

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...

Chouba,
Pochard d'assaut .. 

Répondre à choubaka

11

Jeremy, le lundi 25 avril 2005 à 14:23:33

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

Répondre à Jeremy

12

kij_82, le lundi 25 avril 2005 à 14:26:45

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. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

13

Jeremy, le lundi 25 avril 2005 à 14:33:48

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.

Répondre à Jeremy

14

Jeremy, le lundi 25 avril 2005 à 14:52:07

Avec des thread cela donne ca :


	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 ?

Répondre à Jeremy

15

kij_82, le lundi 25 avril 2005 à 15:14:17

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 :

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.. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

16

Jeremy, le lundi 25 avril 2005 à 15:37:55

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 ...

Répondre à Jeremy

17

kij_82, le lundi 25 avril 2005 à 15:44:37

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. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

18

Jeremy, le lundi 25 avril 2005 à 16:04:31

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 :-)

Répondre à Jeremy

23

 Sthocs, le lundi 17 novembre 2008 à 13:06:43

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 : http://gfx.developpez.com/tutoriel/java/swing/swing-threadin­g/

Comme ça si d'autres personnes tombent également dessus ils pourrons accéder directement à une explication plus complète :)

Répondre à Sthocs

19

kij_82, le lundi 25 avril 2005 à 17:31:18

Un p'tit clic pour dire que c fini ! ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82
Interface graphique java swing Bonjour, je suis debutante en java et j ai une question c est la suivante en faite je dois faire une interface graphique dont la premiere fenetre contient des boutons et chaque bouton doit donne accee a une autre fenetre c est une pqge web qui... www.commentcamarche.net/forum/affich-7626255-interface-graphique-java-swing
[JAVA /SWING] Pb d'actualisation de composant Bonjour, Swing me pose quelques (petits) problèmes... Le dernier en date est le suivant : Je veux faire apparaître une ToolBox dans ma fenêtre principale. La difficulté, c'est que suivant certaines actions de l'utilisateur (typiquement, un clic dans... www.commentcamarche.net/forum/affich-11720339-java-swing-pb-d-actualisation-de-composant
Probleme de dimension éléments en java swing Bonjour Débutant en java swing, actuellement, je cherche à mettre en place une interface graphique de type messagerie instantanée... Je suis actuellement entrain de créer ma fenêtre d'accueil... C'est la que mon problème survient... En effet, je... www.commentcamarche.net/forum/affich-10273318-probleme-de-dimension-elements-en-java-swing
[Firefox] plugin Java Jre de SunA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes... www.commentcamarche.net/faq/sujet-1824-firefox-plugin-java-jre-de-sun
Installer Java sous UbuntuPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ... www.commentcamarche.net/faq/sujet-5400-installer-java-sous-ubuntu
[Java] Swing et bases de donnéesBonjour je recherche qqn qui s'y connait bien en java et à qui je pourrais envoyer mon code pour qu'il m'aide à corriger mes erreurs, j'ai une interface graphique reliée à une base de données... merci d'avance www.commentcamarche.net/forum/affich-268186-java-swing-et-bases-de-donnees
Exception in thread "main" java.lang.NoCBonjour, j ai une erreur "Exception in thread "main"java.lang.NoClassDefFoundError:" et je m en sors pas..Si quelqu un a une idee.. j ai installe Java Runtime Environment mais quand je test des java classes en retour j ai le message d erreur... www.commentcamarche.net/forum/affich-2261404-exception-in-thread-main-java-lang-noc
Java : interface swingbonsoir comment est il possible de lancer une deuxiéme fenêtre ou un programme à partir d'un bouton "envoyer" (c'est à dire remplacer la methode > systems.exit(0) par autre chose (autre fenêtre ou programme java sans l'interface graphique) merci pour... www.commentcamarche.net/forum/affich-67508-java-interface-swing
Télécharger Java Runtime EnvironmentJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces... www.commentcamarche.net/telecharger/telecharger-34055318-java-runtime-environment
Télécharger Cavaj Java DecompilerCavaj Java Decompiler est un éditeur gratuit de code Java. Il permet de recomposer le code source Java d'un fichier CLASS. Il prend en charge la décompilation des applets Java, des archives ZIP et JAR. Le code source Java obtenu est précis. Il intègre... www.commentcamarche.net/telecharger/telecharger-34056787-cavaj-java-decompiler
Java - Premier programmePremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main... www.commentcamarche.net/contents/java/javaprem.php3
Java - Les types de donnéesLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et... www.commentcamarche.net/contents/java/javatype.php3
J2EE - Java 2 Enterprise EditionIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des... www.commentcamarche.net/contents/j2ee/j2ee-intro.php3