Passez avec le curseur sur cette applet
Nous présentons trois applications qui font la même chose entre elles et approximativement ce que vous pouvez voir avec l'applet ci-dessus : une petite fenêtre apparaît ; lorsque le curseur entre dans cette fenêtre, le fond devient vert ; lorsque le curseur sort de la fenêtre, il devient rouge.
Le premier programme, le plus simple, utilise un MouseListener.
Le second programme utilise un MouseAdapter.
Le troisième programme utilise un MouseAdapter et une classe interne.
Cela contraint la classe Entendu, qui
implémente l'interface MouseListener,
à définir ces cinq méthodes,
même celles qui ne nous sont pas utiles. On attribuera un MouseListener
à un compsant lorsque des clics sur ce composant, ou bien
l'entrée ou la sortie de la souris, doivent être
traités.
Signalons qu'il existe aussi l'interface MouseMotionListener
pour traiter ce qui concerne les mouvements de la souris sur un
compsosant, avec un bouton enfoncé ou non.
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Dimension;
import java.awt.Color;
public class Entendu extends JPanel implements MouseListener {
public Entendu() {
setPreferredSize(new Dimension(200, 200));
addMouseListener(this);
setBackground(Color.RED);
}
public void mouseEntered(MouseEvent e) {
setBackground(Color.GREEN);
}
public void mouseExited(MouseEvent e) {
setBackground(Color.RED);
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
}
class EssaiEntendu {
public static void main(String[] arg) {
JFrame fenetre = new JFrame();
fenetre.setContentPane(new Entendu());
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.pack();
fenetre.setLocation(300, 300);
fenetre.setVisible(true);
}
}
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Dimension;
import java.awt.Color;
class Ecoute extends MouseAdapter {
JPanel panneau;
Ecoute(JPanel panneau) {
this.panneau = panneau;
}
public void mouseEntered(MouseEvent e) {
panneau.setBackground(Color.GREEN);
}
public void mouseExited(MouseEvent e) {
panneau.setBackground(Color.RED);
}
}
public class EntenduBis extends JPanel {
public EntenduBis() {
setPreferredSize(new Dimension(200, 200));
addMouseListener(new Ecoute(this));
setBackground(Color.RED);
}
}
class EssaiEntenduBis {
public static void main(String[] arg) {
JFrame fenetre = new JFrame();
fenetre.setContentPane(new EntenduBis());
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.pack();
fenetre.setLocation(300, 300);
fenetre.setVisible(true);
}
}
import javax.swing.JPanel;Voici :
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Color;
public class EntenduTer extends JPanel {
public EntenduTer() {
setPreferredSize(new Dimension(200, 200));
addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
setBackground(Color.GREEN);
}
public void mouseExited(MouseEvent e) {
setBackground(Color.RED);
}
});
setBackground(Color.RED);
}
}
class EssaiEntenduTer {
public static void main(String[] arg) {
JFrame fenetre = new JFrame();
fenetre.setContentPane(new EntenduTer());
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.pack();
fenetre.setLocation(300, 300);
fenetre.setVisible(true);
}
}
© Irène Charon - Télécom ParisTech 2011