IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

Utilisation d'un thread pour faire une pause.


Sujet :

Concurrence et multi-thread Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Utilisation d'un thread pour faire une pause.
    Bonjour,

    Je voudrais pouvoir faire un pause dans mon programme.
    Plus précisément je voudrais afficher certaines informations dans une aire de texte, que l'utilisateur ait le temps de les lire, puis qu'un JOptionPane s'ouvre pour que l'utilisateur choisisse telle ou telle option, en rapport avec le texte affiché dans l'aire de texte.

    Dans le Faq du site, j'ai trouvé le code suivant qui utilise les threads :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    long milliSecondes = 500L; 
    int nanosSecondes = 6000; 
    Thread.sleep(milliSecondes, nanosSecondes);
    // ou
    Thread.sleep(milliSecondes);
    Mais le problème que j'ai lorsque je l'utilise est que la pause s'effectue au début de la méthode. Elle perd donc toute son utilité et crée même un temps d'attente génant à la place.
    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                    player.getGUI().println("Je suis ingenieur INFORMATICIEN. Je suis in..");
                    player.getGUI().println("Oups pardon. Escusez moi d'etre si joyeux, mais je viens");
                    player.getGUI().println("de jouer un bon tour à ce vieux snock l'ingenieur.");
     
                    try {
                    long milliSecondes = 500L;
                    Thread.sleep(milliSecondes);
                    }
                    catch(InterruptedException e) {}
     
                    String option[]={ "Ahahahaha, très drole",    "Je viens justement de sa part!"};
                    int answer = new JOptionPane().showOptionDialog(null, "Que voulez vous dire à l'informaticien ?", 
    <div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px">"Options dialogue", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE ,
    null,option,option[0]);</div></div></div>
    Je voudrais donc savoir, s'il est possible de réaliser cette pause comme je l'entends, ou s'il faut s'y prendre autrement.

    Merci

  2. #2
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    heu ! chez moi, la pause s'effectue au bon moment...
    c'est quoi ??

    Sinon, tu peux regarder à :http://javasearch.developpez.com/j2s...ing/Timer.html

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Salut spilliaert,

    alors "player" c'est un objet dans lequel est stocké les informations sur le joueur.
    (Le programme que je cherche a faire est une sorte de petit jeu ou l'on se déplace de pièce en pièce et ou l'on a des énigmes a résoudre, mais tout cela très simplifié)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Timer pause = new Timer(3000, new ActionListener()
                            {
                                public void actionPerformed(ActionEvent e)
                                {
                                    String option[]={ "Ahahahaha, très drole",    "Je viens justement de sa part!"};
                                    answer = new JOptionPane().showOptionDialog(null, "Que voulez vous dire à l'informaticien ?", 
    <div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px">"Options dialogue", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE ,
    null,option,option[0]);</div></div></div></div></div>}
                            }
                    );
                    pause.setInitialDelay(300000000);
                    pause.setRepeats(false);
                    pause.start();
    Je viens d'essayer de mettre ca. Mais ca ne fonctionne pas. Ca n'affiche meme pas le JOptionPane. J'ai du louper un truc énorme.

  5. #5
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    le Timer invoque toutes les X secondes l'actionPerformed() de ton ActionListener...

    Le Timer n'est pas là pour bloquer le programme.

    Donc, tu ne peux pas pas utiliser ce programme dans une ligne de commande avec un programme qui s'exécute et qui meurt tout de suite...

    C'est pour cette raison que Timer est dans le package javax.swing ...

    Il faut un programme avec un GUI qui ne meurt que quand on ferme le JFrame.

    En ligne de commande, tu peux faire attendre le programme avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    new JOptionPane().showXXXDialog(...);
    System.exit(0);
    Ainsi le programme ne meurt que quand l'utilisateur a cliqué sur la XXXDialog...

    @+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ok, merci. Mais je crois que je vais abandonner cette histoire de pause ou alors je le mettrais plus tard, parce que la je dois rendre mon programme demain matin et j'ai pas le temps de me pencher la dessus. En tout cas encore merci et bonne journée.

Discussions similaires

  1. [XL-2013] Utilisation d'un tableau pour faire une pyramide des ages
    Par bdathis dans le forum Excel
    Réponses: 2
    Dernier message: 16/09/2014, 09h44
  2. Réponses: 11
    Dernier message: 01/07/2012, 15h12
  3. [TP] Dupliquer readln pour faire une pause ?
    Par Bba_M dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 08/01/2008, 08h58
  4. [MFC] Faire une pause dans un thread
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2005, 11h49
  5. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo