[Java] Repaint dans une animation

a marqué ce sujet comme résolu.

Bonjour, Je souhaitais réaliser une animation Java utilisant le module Swing dans laquelle un JLabel s’actualiser toutes les 200ms avec le temps qui changeait. J’ai donc écrit le code suivant mais il ne fonctionne pas. Le problème vient visiblement de la méthode repaint. Pourtant j’ai essayé de changer repaint en update ou paint en paintComponent et rien n’y fait… Merci d’avance pour votre réponse

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test extends JFrame implements Runnable{
    private JPanel pan;
    private JLabel lbl;
    private int temps;
    private Thread anim;
    public Test() {

        setSize(300,300);
        pan = new JPanel();
        lbl = new JLabel("");
        pan.add(lbl);
        add(lbl);
        temps = 0;
        anim = new Thread(this);
        anim.start(); 
    }
    public void paintComponent(Graphics g) {
        super.paint(g);
        lbl.setText("paint");
    }
    public void repaint(Graphics g) {
        super.repaint();
        lbl.setText(" "+temps);     
    }
    public void run() {
        while (true) {
            try{
             temps+=2;
            }catch(NullPointerException e) {

            }
             repaint();

          try {
            Thread.sleep(200);
          }
          catch(InterruptedException e) {
            System.out.println(e);
          }
        }
       }

    public static void main(String [] args) {
        Test t= new Test();
        t.setVisible(true);
    }
}

Merci pour ta réponse  ! En fait ça ne fonctionne pas trop. J’ai essayé de changer le code par ça

1
2
3
4
5
6
7
public void paint(Graphics g) {
        lbl.setText(" "+temps);     

    }
    public void update(Graphics g) {
        paint(g);
    }

mais ça me paraît un peu bourrin. En fait je me demande s’il n’y a pas un problème avec les threads et le fait que j’utilise Thread.sleep()

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte