Algorithmique et langage Java

Détection des actions des boutons

Au lieu d'utiliser un MouseMotionListener on va maintenant utiliser un MouseListener. On pourra obtenir alors des informations sur les pressions et les clics sur les boutons, notamment. Il va falloir alors définir (implémenter) les méthodes MouseClicked, MouseEntered, MouseExited, MousePressed, MouseReleased. On modifie la classe PanneauPerso comme suit
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Color;
import java.awt.event.*;

class PanneauPerso extends JPanel implements MouseListener{ 
		PanneauPerso()
		{	
		    setOpaque(true);
			setBackground(Color.black);
			addMouseListener(this);
		}
		
		
		public void mouseClicked(MouseEvent e) {
					int x=e.getX();  obtention des coordonnées de l'évènement 
					int y=e.getY();
					int n=e.getClickCount();  obtention du nombre de clics 
					String bouton=""; 
					if (e.getButton()==MouseEvent.BUTTON1){   identification du bouton concerné 
						 bouton=" gauche ";
					 }
				     else if (e.getButton()==MouseEvent.BUTTON3){
							 bouton=" droit ";
					 } 
					 else if (e.getButton()==MouseEvent.BUTTON2){
							bouton=" milieu/molette ";
					} 
								 
					System.out.println("On a cliqué "+n+" fois avec le bouton "+bouton+" en ("+x+","+y+")");
		}


		
		public void mouseEntered(MouseEvent e) {
			int x=e.getX();
			int y=e.getY();
			System.out.println("La souris est entrée sur le composant en ("+x+","+y+")");			
		}


		public void mouseExited(MouseEvent e) {
			int x=e.getX();
			int y=e.getY();
			System.out.println("La souris est sortie du composant en ("+x+","+y+")");	
			
		}

		public void mousePressed(MouseEvent e) {
			int x=e.getX();
			int y=e.getY();
			String bouton="";
			if (e.getButton()==MouseEvent.BUTTON1){
				 bouton=" gauche ";
			 }
		     else if (e.getButton()==MouseEvent.BUTTON3){
					 bouton=" droit ";
			 } 
			 else if (e.getButton()==MouseEvent.BUTTON2){
					bouton=" milieu/molette ";
			} 
						 
			System.out.println("On a enfoncé le bouton "+bouton+" en ("+x+","+y+")");
		
		}


		public void mouseReleased(MouseEvent e) {
			int x=e.getX();
			int y=e.getY();
			String bouton="";
			if (e.getButton()==MouseEvent.BUTTON1){
				 bouton=" gauche ";
			 }
		     else if (e.getButton()==MouseEvent.BUTTON3){
					 bouton=" droit ";
			 } 
			 else if (e.getButton()==MouseEvent.BUTTON2){
					bouton=" milieu/molette ";
			} 
						 
			System.out.println("On a enfoncé le bouton "+bouton+" en ("+x+","+y+")");
			
		}
		
	}


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();
	}

}
Il est possible d'utiliser à la fois un MouseMotionListener et un MouseListener :
 class PanneauPerso extends JPanel implements MouseListener, MouseMotionListener{  
 
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é