Votre question

Attente en JAVA

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Avril 2008 10:09:03

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

Autres pages sur : attente java

23 Avril 2008 12:52:50

il y'a sleep en php, coté java, il doit existé un équivalent.
23 Avril 2008 15:42:00

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
Contenus similaires
23 Avril 2008 19:07:26

Utilise Thread.Sleep(3000);

3000 = 3000 millisecondes = 3 secondes.
23 Avril 2008 19:16:48

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
23 Avril 2008 19:17:59

Vinz42 a dit :
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 !!!
23 Avril 2008 21:02:21



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
a b L Programmation
23 Avril 2008 21:51:34

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.
24 Avril 2008 11:35:11

+1 avec cricky.
24 Avril 2008 11:49:06

CRicky a dit :
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...

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


Je voulais donc savoir comment resoudre ce probleme. Merci d'avance pour votre aide
24 Avril 2008 16:02:59

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

a b L Programmation
24 Avril 2008 20:32:47

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.
24 Avril 2008 22:18:50

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.
a b L Programmation
24 Avril 2008 23:37:26

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.
27 Avril 2008 21:27:09

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.
a b L Programmation
27 Avril 2008 22:54:33

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é.
5 Mai 2008 09:00:17

CRicky a dit :
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
a b L Programmation
5 Mai 2008 20:09:26

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.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS