Bonjour,
Je vous expose mon problème, je dispose d'une classe qui gère des données et qui les affiche sur mon JPanel suivant à travers la méthode : setTextJLabels(...) mais lorsqu'il affiche les nouveaux String dans les JLabels avec la méthode setText(), il affiche les nouveaux String sur les anciens sans faire de repaint() après, alors je fais le repaint() manuellement après la mise à jour des JLabels mais rien n'y fait !
Voici 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
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
54
55
56
57
58
59
60
61
62
63
64
 
package coco;
 
import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
/**
 *
 * @author Womannosky
 */
public class PanelTraitement extends JPanel {
    // Attributs
    private static final long serialVersionUID = 1L;    // une version
    private BufferedImage coucou;                          // une image
    private JLabel taille1;                     // un JLabel pour indiquer la taille 1 
    private JLabel taille2;                    // un JLabel pour indiquer la taille 2
 
    // Constructeur
    public PanelTraitement() {
        // Appelle le constructeur de JPanel et initialise le layout
        super(new GridBagLayout());
 
        // Initialise les JLabels
        taille1 = new JLabel("Taille 1 : 0 octets");
        taille2 = new JLabel("Taille 2 : 0 octets");
 
        try {
            // Charge l'image coucou
            coucou = ImageIO.read(getClass().getResource("/images/coucou.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
 
        // Initialise le GridBagLayout
        GridBagConstraints c = new GridBagConstraints();
 
        // Ajoute le JLabel taille1 au panel
        this.add(taille1, c);
        // Réinitialise le gridy du GridBagConstraints pour placer le deuxième JLabel en dessous du premier
        c.gridy+=2;
        // Ajoute le JLabel taille2 au panel
        this.add(taille2, c);
    }
 
    // Change le texte des JLabels
    public void setTextJLabels(String tailleO, String tailleC) {
        taille1.setText("Taille 1 : " + tailleO + " octets");
        taille2.setText("Taille 2 : " + tailleC + " octets");
        repaint(); // TODO: Marche pas !!
    }
 
    // On redéfinit la méthode paintComponent() pour afficher le graphique
    @Override
    public void paintComponent(Graphics g) {
        // Affiche l'image au centre du panel (en X)
        g.drawImage(coucou, this.getWidth()/2 - coucou.getWidth()/2, 0, this);
    }
}
Que fais-je de mal dans la définition de mon JPanel ? parceque là, je vois pas du tout. Le seul moyen que cela s'affiche correctement, c'est que je redimensionne la fenêtre et là, il fait le repaint()...
Merci pour vos réponses...