Des Mouse event (clic) oubliés dans mon JPanel
Bonjour,
Voilà j'ai dérivé un JPanel pour afficher plusieurs images sur lesquelles je veux catcher les clics (cf. le code simplifié en dessous).
Le problème: il arrive plus ou moins régulièrement que certains clics dans mon JPanel ne soient pas 'catchés', ie. processClick() n'est pas appelé.
C'est (très) ennuyeux. Aurais-je fait un truc de travers ?
Code:
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
|
public class ImagePanel extends JPanel {
public ImagePanel () {
super.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
processClick(e);
}
});
}
protected void processClick(MouseEvent e) {
// pour chaque image de la liste, j'appelle getImageRectangle()
// je compare avec la coordonnée contenue dans 'e' et ainsi
// je sais quelle image a été cliquée ; je préviens des listeners.
}
public void paintComponent(Graphics g) {
// ici j'affiche ma liste d'images
// en calculant leur pos + taille avec getCardRectangle(...)
for (int pos = 0 ; pos < m_images.size() ; ++pos) {
Rectangle rect = getImageRectanle(i);
g.drawImage(img, rect.x, rect.y, rect.width, rect.height, this);
}
}
public Rectangle getImageRectangle(int pos) {
// je retourne ici la pos + taille de mon image à afficher.
}
public static void main(String[] argv) {
CardsPanel cards = new CardsPanel(CardsPanel.Direction.HORIZONTAL, true);
//etc...
}
} |