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

AWT/Swing Java Discussion :

JButton avec boucle while contenant thread.sleep(1000)


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut JButton avec boucle while contenant thread.sleep(1000)
    Bonjour,

    je suis en train de développer une petite appi qui affiche un dessin 2D et toutes les secondes, j'ai envie de le faire évoluer.

    Donc pour avoir un timer, j'utilise une thread "vide" sur laquelle j'applique un timer.sleep(1000);. Ca fonctionne bien mais il faut attendre que le programme ait fini son dessin pour pouvoir quitter (la croix ne réagit plus). J'ai essayé en rajoutant un bouton Stop pour interrompre le tout en faisant timer.interrupt(); timer.join();.

    Mais ça ne change rien, je dois toujours attendre qu'il ait fini...

    Voici en gros mon programme (pseudo 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class Dessin{
      boolean painting =false; 
      timerTH timer = new timerTH();
     
      public void paint(Graphics g){
        while painting{
           //actualise le dessin
           timer.sleep(1000);
        }
        //quitte la thread si elle est active
      }
     
      private void btnStopActionPerformed(ActionEvent evt){
        //quitte la thread si elle est active
        painting = false;
      }
     
      //Main lance la thread timer et un repaint avec painting = true;
    }
     
    class timerTH  extends Thread{
      //Méthode run vide
    }
    J'ai vu après plusieurs recherche que les threads étaient déconseillées avec Swing, mais je les utilise sans les utiliser.

    Est-ce que cela pourrait marcher avec les threads? Si oui, comment?

    Merci par avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Je pense que javax.swing.Timer devrait repondre à ton besoin.

    Si tu cherches à faire toi meme des attentes, utilises plutot la methode wait (avec un timeout). Tu pourras alors debloquer ton thread avec la methode notify().

Discussions similaires

  1. Probleme avec boucle while
    Par Slash54000 dans le forum Débuter
    Réponses: 7
    Dernier message: 22/12/2008, 09h01
  2. [MySQL] Probleme UPDATE avec boucle WHILE
    Par iverson_mac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 17h07
  3. Réponses: 2
    Dernier message: 19/11/2006, 10h54
  4. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 19h19
  5. [Thread] PB Thread.sleep(1000) marche pas
    Par kliel dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 03/12/2004, 13h47

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