Quand un programme utilise une interface graphique, certains éléments sont conçus pour déceler et traiter des actions de la souris et du clavier et y répondre: ce sont les boutons, les menus, les lignes de saisie de texte...
Mais on peut souhaiter ajouter cette capacité à un type composant qui n'est pas à l'origine conçu pour interagir avec l'utilisateur, comme par exemple un JPanel.
Pour commencer on crée une fenêtre, dans laquelle on ajoute un panneau. Comme ce panneau va être d'un type un peu spécifique, pour être adapté à nos besoins, on va tout de suite créer une classe descendante de JPanel dont notre panneau sera une instance :
On crée une classe exécutable appelée ici ActionSouris
import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Color; import java.awt.event.*; // classe PanneauPerso class PanneauPerso extends JPanel { // le constructeur de la classe PanneauPerso règle la couleur de fond à noir PanneauPerso(){ setOpaque(true); setBackground(Color.black); } } //fin de la classe PanneauPerso //début de la classe ActionSouris public class ActionSouris extends JFrame{ /* le construction de la classe ActionSouris dimensionne la fenêtre, lui ajoute une instance de la classe PanneauPerso, et la rend visible */ ActionSouris(){ setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new PanneauPerso()); setVisible(true); } public static void main(String[] args) { new ActionSouris(); lors de l'exécution du programme une instance (anonyme) d'ActionSouris est créée } } //fin de la classe ActionSourisRemarque : le fichier ActionSouris.java contient donc 2 classes, mais seule la classe ActionSouris est publique, donc il n'y a pas de problème. La classe PanneauPerso n'est utilisable que depuis les autres classes définie dans le fichier ActionSouris.java. On aurait pu aussi créer la classe PanneauPerso dans son propre fichier PanneauPerso.java et la rendre publique, pour pouvoir l'utiliser depuis d'autres classes.