import java.awt.event.*;pour que les "évènements" comme le mouvement de la souris puissent être décelés.
On complète la déclaration de la classe PanneauPerso
class PanneauPerso extends JPanel implements MouseMotionListenerEclipse vous signale alors un problème. La ligne ci-dessus a pour but de permettre au PanneauPerso de surveiller les mouvements de souris (Mouse Motion), or pour pouvoir ce faire PanneauPerso doit contenir les deux méthodes permettant justement cette surveillance.
On ajoute donc dans la classe PanneauPerso les deux méthodes suivantes :
public void mouseMoved(MouseEvent e){ } public void mouseDragged(MouseEvent e){ }Telles qu'écrites ci-dessus, ces deux méthodes ne font strictement rien, mais elles existent, donc Eclipse ne signale plus d'erreur.
On peut compléter leur code pour leur faire faire quelque chose, par exemple
public void mouseMoved(MouseEvent e){ System.out.println("Je bouge!"); } public void mouseDragged(MouseEvent e){ System.out.println("On me traîne!"); }Pour l'instant la classe PanneauPerso a la capacité de surveiller les mouvements de la souris dans un composant, mais il n'est pas précisé lequel. On va donc préciser quel est le composant surveillé, qui ne sera autre que le PanneauPerso lui-même, désigné par "this". On ajoute donc dans le constructeur du PanneauPerso la ligne
addMouseMotionListener(this);Ce qui donne pour le programme complet :
import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Color; import java.awt.event.*; // classe PanneauPerso class PanneauPerso extends JPanel implements MouseMotionListener{ PanneauPerso(){ setOpaque(true); setBackground(Color.black); addMouseMotionListener(this); // le panneau (this) est chargé de surveiller les mouvements de souris au-dessus de lui-même } public void mouseMoved(MouseEvent e){ System.out.println("Je bouge!"); } public void mouseDragged(MouseEvent e){ System.out.println("On me traîne!"); } } //fin de la classe PanneauPerso //début de la classe ActionSouris public class ActionSouris extends JFrame{ ActionSouris(){ setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); getContentPane().add(new PanneauPerso()); } public static void main(String[] args) { new ActionSouris(); } } //fin de la classe ActionSourisEn exécutant le programme vous pouvez constater que la méthode MouseMoved est appelée quand la souris bouge au dessus du panneau, tandis que MouseDragged est appelée quand la souris est déplacée avec un bouton enfoncé.