Se connecter avec
S'enregistrer | Connectez-vous

Attente en JAVA

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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

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



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
Expert Programmation

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.

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

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

Expert Programmation

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.

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.

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

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

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
Expert Programmation

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde