Bonjour à tous,
je fais un petit jeu de dame et je voudrais afficher une image sur une case quand je la survole. Voici ce que j'ai fais :
Dans le constructeur de ma classe qui gère l'affichage du damier :
Ensuite, la méthode survol(Point p) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // pour afficher la case survolée addMouseListener(new MouseAdapter(){ @Override public void mouseEntered(MouseEvent evenement) { // TODO: Gérer l'affichage de la case survolée survol(evenement.getPoint()); } });
Et la méthode qui dessine l'image sur la case :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Gère le survol des cases private void survol(Point p) { final int l = (Damier.TAILLE_PLATEAU - 1 - p.y / tailleCases); final int c = p.x / tailleCases; // On dessine la position dessineSurvol(getGraphics(), l, c); }
Mon problème n'est surement pas compliqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Dessine l'image de la case survolée private void dessineSurvol(Graphics g, int l, int c) { // calcule la position de son coin en haut à gauche int cPos = c * tailleCases; int lPos = (Damier.TAILLE_PLATEAU - 1 - l) * tailleCases; // dessine la case survolée g.drawImage(caseSurvolee, cPos, lPos, this); }
En fait, quand je passe sur mon damier avec ma souris la première case survolée affiche bien l'image, et ensuite, il faut que je ressorte du JPanel (ma classe Damier étend JPanel) pour qu'il réaffiche l'image sur une autre case survolée, et ceci sans effacer la dernière.
J'aimerais que lorsque je suis sur mon JPanel avec ma souris, à chaque fois que je survole une case, il m'affiche l'image, et tout ceci en supprimant l'image affichée sur la dernière case.
Merci pour votre aide !
P.S : Ce serait bien aussi qu'aucune image ne s'affiche quand je sort de mon JPanel avec ma souris.
Partager