OVH Cloud OVH Cloud

commment capter les clics sur une image ?

1 réponse
Avatar
Faab
Bonjour,

Je cherche à détecter les clics sur une image de type ImageIcon en utilisant
l'interface MouseListener. Cette image est dessinée sur un JPanel.

Or je ne parviens pas à savoir autre chose que les coordonnées du clic et ce
que je cherche est le nom de l'image sur laquelle on a cliqué...

extrait de mon fichier Panneau (extends JPanel implements MouseListener) :
public void mouseClicked(MouseEvent e) {
Object o = e.getSource() ;
o = findComponentAt(e.getPoint());
System.out.println("Clic detecte : classe "+o.getClass()); //renvoie
Panneau
System.out.println("Coordonées : x="+e.getX()+"- y="+e.getY());
}

Pouvez-vous m'aider ?

Faab

1 réponse

Avatar
JScoobyCed
"Faab" :

Or je ne parviens pas à savoir autre chose que les coordonnées du clic et
ce

que je cherche est le nom de l'image sur laquelle on a cliqué...

extrait de mon fichier Panneau (extends JPanel implements MouseListener) :
public void mouseClicked(MouseEvent e) {
Object o = e.getSource() ;
o = findComponentAt(e.getPoint());
System.out.println("Clic detecte : classe "+o.getClass());
//renvoie

Panneau
System.out.println("Coordonées : x="+e.getX()+"- y="+e.getY());
}



Le probleme est que ImageIcon ne capture pas les evenement de la souris. Par
contre, le component/container qui contient ImageIcon le peut souvent (selon
le choix du component). Vos ImageIcon sont directement dessines dans le
JPanel, ou alors dans une JLAbel/JPanel intermediaire ?

<pseudo-code>
class Panneau extends JPanel implements MouseListener {

private JLabel[] jlImg;
...
public void initGraphique() {
ImageIcon[] mesImages = getImages(); // on recurpere les differentes
images
jlImg = new JLabel[mesImages.length]; // on cree le tableau de JLabel
for(int i = 0; i<jlImg.length; i++) {
jlImg[i] = new JLabel(mesImages[i]); // on cree les JLabel
jlImg[i].setMouseListener(this); // on enregistre le
Listener
this.add(jlImg[i]); // ajoute au
Panneau
}
}
...
}
</pseudo-code>

--
JScoobyCed