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();
int y=e.getY();
int n=e.getClickCount();
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 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{