Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme d'actualisation d'un JLabel dans un JPanel

1 réponse
Avatar
Faab
Bonjour,

Je cherche à afficher sur un JPanel des JLabel qui contiennent des
ImageIcon. L'affichage initial fonctionne, mais je ne parviens plus à
modifier l'image
contenue dans chaque JLabel et mettre à jour ces images dans le JPanel
(celui-ci reste figé).

Extraits de mon fichier Panneau.java (extends JPanel) :

public class Panneau extends JPanel implements MouseListener {

public Panneau() {

//création d'images à mettre dans les Jlabel

// ici je crée 1 tableau qui contient tous les JLabel
billes = new Bille [nbligne][nbcolonnes];
for (int i=0; i<5; i++)
for (int j=0; j<7; j++) {
billes [i][j] = new Bille (imgvide,j,this) ;
add (billes [i][j]);
}
}

// affichage du contenu du JPanel
public void paintComponent (Graphics g) {
super.paintComponent(g) ;

for (int i = 0; i<5; i++) {
// pour chaque ligne

for (int j = 0; j<7; j++) {
// pour chaque colonne

// choix de l'image à afficher
ImageIcon im = imgvide ;
if (tableau[i][j] == 1) {
im=img2;
}

// ICI je cherche à modifier le contenu des JLabel et ça ne
fonctionne pas
billes[i][j].setImage(im);
repaint();

} // fin ligne
} // passe à la ligne suivante
}

// détection des clics OK (j'utilise les JLabel pour pouvoir recuperer les
clics)
public void mouseClicked(MouseEvent e) {
Object o = e.getSource() ;
Object i = findComponentAt(e.getPoint());
System.out.println("Clic detecte : classe "+i.getClass()); // renvoie
Bille
}
public void mouseEntered, mouseExited, mousePressed, mouseReleased...etc

// attributs de la classe : Fenetre, Images, int [][] tableau ; public
Bille [][] billes ;
}// fin classe

// cette classe sert à afficher des JLabel qui contiennent une image ainsi
que des informations sur l'image sous la forme d'un entier

class Bille extends JLabel {

int col ; ImageIcon img ; // attributs

public Bille(ImageIcon i, int colonne, MouseListener m) {
super((Icon)i); img = i; col = colonne ; addMouseListener(m);
}

public int getCol () {return col;}

public void setImage (ImageIcon i) {
img=i;// COMMENT METTRE L'IMAGE A JOUR ?
repaint(); // fonctionne pas
}

}

Si vous avez une idée, je vous remercie

A++

Faab

1 réponse

Avatar
Farid
public void setImage (ImageIcon i) {
img=i;// COMMENT METTRE L'IMAGE A JOUR ?
repaint(); // fonctionne pas
setIcon(i);



Farid