Cours les événements dans Java en pdf

Cours les événements dans Java en pdf, tutoriel & guide de travaux pratiques en pdf.

Modèle d’événements de Java 1.1

Basé sur le principe général de la délégation.
Chaque événement est représenté par un objet
Contenu de l’objet évènement :
• la source de l’événement
• le moment auquel il a eu lieu
• des informations spécifiques (coordonnées souris, touche enfoncée, etc.).
Pour recevoir des évènements un objet doit :
• s’inscrire comme écouteur auprès d’un objet source d’événement ;
• posséder les méthodes requises pour traiter ce type d’événement.

Gestion de la souris (1)

Pour recevoir des événements de type MouseEvent Il faut
• implémenter l’interface MouseMotionListener.
c-à-d les méthodes mouseMoved() et mouseDragged().
• appeler la méthode addMouseMotionListener() de la source d’évènements pour s’inscrire.
Cas des applets :
une applet est sa propre source d’événements souris
On écrira donc l’appel d’inscription :
this.addMouseMotionListener(this);

Afficher en permanence lescoordonnées de la souris :

import java.awt.Graphics; import java.awt.Event; import java.awt.event.*;
public class Interaction extends java.applet.Applet implements MouseMotionListener
{
int sourisX, sourisY;
long quand;
public void init() {
this.addMouseMotionListener(this);
}
public void mouseMoved(MouseEvent e){
// extrait les informations de l’événement
quand=e.getWhen(); sourisX=e.getX(); sourisY=e.getY();
repaint();
}
public void mouseDragged(MouseEvent e) {}
public void paint(Graphics g){
g.drawString(quand+
"=("+sourisX+","+sourisY+")",10,20);
}
}

À l’aide d’un adaptateur (2)

Classes toutes faites, appelées adaptateurs, qui réalisent chacune un écouteur inactif.
On définit un écouteur par extension d’un adaptateur.

import java.awt.Graphics; import java.awt.Event; import java.awt.event.*;
public class InteractionI extends java.applet.Applet{
int sourisX, sourisY; long quand;
class EcouteSouris extends MouseMotionAdapter {
public void mouseMoved(MouseEvent e){
quand=e.getWhen(); sourisX=e.getX();
sourisY=e.getY();
repaint();
}
}
public void init() {
this.addMouseMotionListener(new EcouteSouris());
}
public void paint(Graphics g) {
}
}
g.drawString(quand+"=("+sourisX+
","+sourisY+")",10,20);

Avec des classes anonymes (3)

Pour éviter de définir explicitement une classe écouteur :

public class InteractionA extends java.applet.Applet {
int sourisX, sourisY;
long quand;
public void init() {
this.addMouseMotionListener(
}
new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e){
}
});
quand=e.getWhen(); sourisX=e.getX();
sourisY=e.getY();
repaint();
public void paint(Graphics g) {
g.drawString(quand+"=("+sourisX+","+sourisY+")",10,20);
}
}

Définition d’une classe anonyme

new MouseMotionAdapter() { … } =
• définit une classe qui étend MouseMotionAdapter
• crée un objet de cette classe (l’écouteur).
Ecriture compacte mais plus très lisible
On mélange des déclarations de méthodes à l’intérieur d’expressions.

Interface MouseListener Clics:

mousePressed(), mouseReleased(), mouseClicked(),
Entrés/sortie du composant:
mouseEntered(), mouseExited().
Extraire les information de l’événement de type MouseEvent reçu :
getWhen() : le temps auquel s’est produit l’événement ;
getX(), getY() : la position du pointeur ;
getClickCount() : le nombre de clicks sur ce même point ;
isAltDown(), isAltGraphDown(), isControlDown(), isMetaDown(), isShiftDown() : vrai si la touche
(modificateur) Alt, AltGr, Ctrl, Meta ou Shift était enfoncée lors de l’événement ;

Souris à plusieurs boutons

getModifiers() : un codage sous forme d’un int des touches enfoncées.
On peut tester quel bouton a déclenché l’événement avec l’expression.
(getModifiers() & BUTTONi_MASK) // i = 1, 2 ou 3
Le résultat est différent de 0 si le bouton i a été pressé, relâché ou cliqué (c’est-à-dire pressé puis relâché).
Cependant, pour être vraiment portable, une application ne devrait pas faire d’hypothèses sur le nombre de boutons dont est munie la souris.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *