Tom's Guide > Forum > Programmation > Attente en JAVA

Attente en JAVA

Forum Programmation : Attente en JAVA

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

Volia, j'aimerai mettre dans mon code java entre deux lignes de code une sorte d'attente (comme un genre de boucle for qui ferait rien) pendant 3 seconde avant de continuer la suite de mon programme. Comment faire ?

------ code ------

ATTENDRE 3 SECONDE -> Comment faire ???

------ code -------

ps: j'ai essayé avec thread en vain.

Merci d'avance pour votre aide

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

il y'a sleep en php, coté java, il doit existé un équivalent.

Répondre à okinou

Si je me rappel bien ça donne un truc du genre:

try{
wait(300);
}catch(InterruptedException e){
System.out.println(e.getMessage());
}

il faut mettre un try/catch car une exception peut se former

PS: j'ai mis 300 dans le wait car je crois que c'est des milli secondes mais je suis pas sur au pire tu test et tu modifies si c'est pas ça


Message édité par azen29 le 23-04-2008 à 15:44:42
Répondre à azen29

Utilise Thread.Sleep(3000);

3000 = 3000 millisecondes = 3 secondes.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42
- -1 +

Re Bonjour,

Je vais présisé mon problème:

Voila, mon probleme c'est de mettre une attente entre le moment ou je crée mon JDialog et celui ou je le ferme afin qu'il ne reste que 5 seconde à l'écran. (mettre un attente entre deux ligne de code)

J'ai donc essayé avec un thread mais ça marche pas.


Creation du JDialog dans un JFrame lejframe

Attente...... // J'ai essayé en redefinissant thread et en l'appelant avec lethread.start, mais ça bloque et ne passe pas à la suite.

Fermeture du frame et don du JDialog avec lejfame.dispose();


Mais ça marche pas !!! Quelqu'un aurait une solution ?

Merci d'avance pour vos reponse

Répondre à lezert

Vinz42 a écrit :

Utilise Thread.Sleep(3000);

3000 = 3000 millisecondes = 3 secondes.



Merci pour l'info.
J'ai essayé ça mais ça marche pas !!!
Je viens de précisé mon problème !!!

Répondre à lezert
- -1 +
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky



Merci !!!

Classe
{
Creation du Jframe avec une image

attente avec ce que tu m'as dit

Fermeture du JFrame
}

---> Si je l'appelle directement ça marche tres bien par contre si je l'appelle dans une autre classe alors la mon Jframe s'affiche de maniere transparente (il a du mal a se charger) et se ferme sans avoir vu l'image. L'attente fait qu'il n'arrive pas a se charger !!!
Rq: il ne s'affiche qu'apres l'attente quand j'enleve sa fermeture dans la classe qui le definie.

Comment resoudre se probleme ???

Merci d'avance

Répondre à lezert

le sleep arrête le thread courant. Si tu es dans le thread principal, la gestion des messages et affichages sont aussi endormies :)
Tu peux lancer ton algo dans un thread que tu peux bloquer 3 secondes, l'affichage et la gestion de messages ne seraient plus bloqués.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

+1 avec cricky.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

CRicky a écrit :

le sleep arrête le thread courant. Si tu es dans le thread principal, la gestion des messages et affichages sont aussi endormies :)
Tu peux lancer ton algo dans un thread que tu peux bloquer 3 secondes, l'affichage et la gestion de messages ne seraient plus bloqués.




Voila mon code, je vois pas tres bien ce que tu veux dire...

Code :
  1. Volia mes trois classe:
  2. /**
  3. * La classe Attendre extens la methode thread
  4. */
  5. public class Attendre extends Thread
  6. {
  7.     public int temps;
  8.    
  9.     public Attendre(int le_temps)
  10.     {
  11.         temps=le_temps;
  12.     }
  13.    
  14.     public void run()
  15.     {
  16.         try
  17.         {
  18.             sleep(temps);
  19.         }
  20.         catch(Exception ex){}
  21.            
  22.     }
  23.    
  24. }
  25. /**
  26. * La classe Affichage Info extends un JFrame qui contiendra une image
  27. */
  28.     public AffichageInfo(String le_titre,String le_message,int le_type)
  29.     {
  30.         setLocationRelativeTo(this);
  31.        
  32.         titre=le_titre;
  33.         message=le_message;
  34.         type=le_type;
  35.        
  36.         panel=new JImage("limage.gif",360,220);
  37.         getContentPane().setLayout(new BorderLayout());       
  38.         this.add(panel,BorderLayout.CENTER);
  39.         this.setPreferredSize(new Dimension(300, 300));
  40.        
  41.         pack();
  42.         setVisible(true);
  43.        
  44.     }
  45. /**
  46. * La classe Jouer va appeller les deux classes precedentes
  47. */
  48.     ----------------------- Code ---------------------------------
  49.     IHM.AffichageInfo messageinfo = new IHM.AffichageInfo("De","Vous avez fait: " + valeurDe,0 );
  50.            
  51.             IHM.Attendre Attente=new IHM.Attendre(5000);
  52.            
  53.             Attente.start();
  54.             try
  55.             {
  56.             Attente.join();
  57.             }
  58.             catch(Exception ex){}
  59.           messageinfo.dispose();
  60.     ------------------------ Code  ------------------------------------
  61.            
  62. /**
  63. * La classe AffichageJeu est la classe principale qui va appellé  la classe jouer
  64. */
  65. public class AffichageJeu extends JFrame implements ActionListene
  66. {
  67.     Jouer j= new Jouer(......);
  68.     etc .......
  69. [b] // ET DONC ICI L'IMAGE NE S'AFFICHE COMME JE LE PECISE PRECEDEMMENT[/b]
  70. }



Je voulais donc savoir comment resoudre ce probleme. Merci d'avance pour votre aide


Message édité par lezert le 24-04-2008 à 13:09:11
Répondre à lezert

Je pense que le probleme vient de la classe Jouer et plus precisement de

try
{
Attente.join();
}
catch(Exception ex){}

En effet, lorsque je le met pas l'affiche s'affiche nickel et disparait automatiquement au bout d'un certain temps, mais le probleme c'est que sans attente.joint() le programme continue à defiler et donc ça ne me va pas !!! En effet, le attent.joint() permet il me semble d'ttendre la fin du thread avant de passer a la suite.

Si quelqu'un à une solution, je le remercie d'avance ca ça fait deux jours que je bloque !!!!

Répondre à lezert

Le code doit être exécuté dans le thread, et quand celui-ci se termine (après le sleep), il informe le thread principal qui déclenche alors la suite.
Comme ça le thread principal ne fait "rien" quand tu fais le traitement et attente avec le thread.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Merci, mais j'ai essayé de le mettre partout et rien nifait. Soit le programme principal continue en meme temps que l'attente, soit l'image ne s'affiche pas car elle est bloqué par le thread qui l"apppelle.

Répondre à lezert

C'est dommage, parce que moi je t'indiquais la solution qui fonctionne toujours : le traitement dans un thread qui fait remonter l'info quand c'est fini.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Si tu sais comment faire ça m'interesse !!! Je vois pas tres bien ce que tu veux dire. Tu peux etre plus precis.

Et ça va regler mon probleme de chargement de l'image qui se bloque ?

Merci d'avance pour ta reponse.

Répondre à lezert

Quand tu lances le thread, il ne faut pas que tu fasses les autres opérations après, car le thread est exécuté en parallèle (comme un autre programme, mais dans le même processus). C'est le thread, qui lorsqu'il a finit envoie un signal indiquant que l'attente est écoulé.
Donc, pendant l'attente, ton programme continueras comme si tu n'avais pas lancé le thread, mais lorsque celui-ci sera terminé, le temps sera écoulé.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

CRicky a écrit :

Quand tu lances le thread, il ne faut pas que tu fasses les autres opérations après, car le thread est exécuté en parallèle (comme un autre programme, mais dans le même processus). C'est le thread, qui lorsqu'il a finit envoie un signal indiquant que l'attente est écoulé.
Donc, pendant l'attente, ton programme continueras comme si tu n'avais pas lancé le thread, mais lorsque celui-ci sera terminé, le temps sera écoulé.



Je te remercie pour ton aide. Par contre, vu que tu as mon code il ne serait pas possible que tu le modifie afin qu'il marche. Je sais que je t'en demande beaucoup, mais ça fait tellemnt longtemps que je cherche, que j'ai pas d'autres solution car j'ai essayer des milllions de possiblité pour le code en vain.
Merci d'avance

Répondre à lezert

Non, désolé, je ne teste aucun code du forum, je te fais simplement profiter de mon expérience. Essaie de le modifier toi-même, et reposte ton nouveau code si tu n'y arrive pas.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Attente en JAVA
Aller à :

Il y a 249 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens