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