Différentes technique pour placer un écouteur d’événement dans une JFrame. Un écouteur d’événement est un objet qui implémente l’interface MouseListener, ou qui utilise la classe MouseAdapter. La classe MouseAdapter, contrairement à l’interface MouseListener, peut être instanciée car non abstraite. L’interface MouseListener étant une interface, par nature elle ne peut être instanciée et ne sert qu’à délivrer différentes méthodes à associer à un écouteur.
Il existe plusieurs manières de mettre un écouteur d’événements dans une JFrame. On peut soit placer cette écouteur d’événements dans la JFrame même, ou créer une classe à part qui soit implémentera l’interface MouseListener, soit en déclarant la classe « extends MouseAdapter ».
Voici une manière de placer un écouteur d’événements dans une JFrame en 3 classes. Une classe Fenêtre qui représente la fenêtre JFrame, une classe Ecouteur qui représente l’objet de type MouseListener que l’on associera à notre fenêtre, et enfin une classe Main qui appel la fenêtre crée avec son écouteur d’événements.
Nous allons associer 2 écouteurs d’événements à cette fenêtre JFrame. Un premier écouteur se trouve dans la classe Ecouteur, dans le constructeur de la classe de type Ecouteur. Le deuxième écouteur d’événements est dans créée dans la classe EcouteurSouris qui se trouve insérée dans la classe Fenêtre.
package Swing;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Ecouteur extends MouseAdapter{
public void mouseClicked(MouseEvent e) {
System.out.println("Click" );
}
}
Classe Fenetre qui représente notre Fenetre, notre Jframe
package Swing;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class Fenetre extends JFrame {
Fenetre (){
setSize(600,250);
setVisible(true);
setTitle("salut");
addMouseListener(new EcouteurSouris());
}
class EcouteurSouris extends MouseAdapter { // cette classe utilise MouseAdapter pour associer un écouteur d'événements à notre JFrame, sans qu'il soit nécessaire de redéfinir toute les méthodes.
public void mouseClicked(MouseEvent e){
System.out.println("reclick");
}
}
}
Classe Main qui sers à appeler nos autres classes du package
package Swing;
import javax.swing.*;
import java.awt.event.*;
public class Main {
public static void main (String[] args){
Fenetre fen = new Fenetre ();
fen.addMouseListener(new Ecouteur()); // méthode addMouseListener qui sert à associer un écouteur d'événements à notre objet cotnenu dans la variabe fen
}
}