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 :
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()...
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); } }
Merci pour vos réponses...
Partager