Algorithmique et langage Java

Détecter la souris ou le clavier.

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 ActionSouris
Remarque : 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.
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé