précédent | suivant | table des matières

événements

Sommaire
    1. Principe
    2. Hiérarchie des classes événement
      1. ActionEvent
      2. MouseEvent
      3. KeyEvent
    3. Adaptateur

Démonstration

1Principe

Les composants Swing créent des événements, soit directement, soit par une action de l'utilisateur sur le composant. Ces événements peuvent déclencher une action exécutée par d'autre(s) composant(s).

Un composant auditeur doit s'inscrire auprès du composant source des événements qu'il veut traiter.

L'événement L'interface Listener
class XxxEvent extends java.util.EventObject{
   public Xxx(Object source){ super(source);}
        ...
}
interface XxxListener{
   void traiter( XxxEvent  e);
}
Composant source Composant auditeur
class Source{
   private List<XxxListener>
        xxxListener = new ArrayList<XxxListener>();
   public void addXxxListener( XxxListener l){ 
        xxxListener.add(l);
   }
   public void removeXxxListener(XxxListener  l){
        xxxListener.remove(l);
   }
   protected void processXxxEvent( XxxEvent e){
           for(XxxxListener ecouteur : xxxListener) 
                      ecouteur.traiter(e);
   }
       ...
}
class Auditeur implements Xxxlistener{
        
           ...
        
   void traiter(XxxEvent  e){
      // le  traitement de l'événement e
   }

    ...

}
Un programme utilisant ces différentes classes :
        Source  s = new Source();
        Auditeur a = new Auditeur();
        s.addXxxListener(a);
        // a se recense auprès de s et va pouvoir traiter les événements générés par s
        ...
        s.removeXxxListener(a);
        // a ne traitera plus les événements générés par s

Exemple : création d'un composant JTextArea qui affiche les événements souris générés par un autre composant :
public class TextAreaAuditeur extends JTextArea 
               implements MouseListener, 
			         MouseMotionListener {
    // implantation des méthode de MouseListener
    public void mouseClicked(MouseEvent e){
       append(e.toString());
    }
    public void mousePressed(MouseEvent e){
       append(e.toString());
    }
    public void mouseReleased(MouseEvent e){
       append(e.toString());
    }
    public void mouseEntered(MouseEvent e){
       append(e.toString());
    }
    public void mouseExited(MouseEvent e){
       append(e.toString());
    }
    
    // implantation des méthode de MouseMotionListener
    public void mouseDragged(MouseEvent e){
       append(e.toString());
    }
    public void mouseMoved(MouseEvent e){
       append(e.toString());
    }
 }
...
JPanel panelSource = new JPanel();
TextAreaAuditeur ta = new TextAreaAuditeur();
panelSource.addMouseListener(ta);
panelSource.addMouseMotionListener(ta);
...

2Hiérarchie

Schéma de la hiérarchie simplifiée des événements java : hiérarchie simplifiée

 2 21ActionEvent

Object getSource()
Retourne l'objet source de l'événement.
int getID()
Retourne le type d'événement.
String  getActionCommand()
Retourne le texte associé au composant source de l'événement (bouton ou menu)
int getModifiers
Retourne un entier indiquant si les touches maj, alt ou ctrl étaient appuyées au moment de la génération de l'événement.
long getWhen()
Retourne la date et l'heure de la génération de l'événement.
String paramString()
Retourne une chaîne de caractères contenant toutes les informations précédentes.
interface ActionListener{
   void actionPerformed(ActionEvent e);
}
Les composants sources de ActionEvent sont :
  • Boutons : JButton, JRadioButton, JCheckBox, JToggleButton
  • Menus : JMenuItem, JMenu, JRadioButtonMenuItem, JCheckBoxMenuItem
  • Texte : JTextField
 : 

2 22MouseEvent

Object getSource()
Retourne l'objet source de l'événement.
int getID()
Retourne le type d'événement.
Point getPoint()
Retourne les coordonnées de la souris lors de la génération de l'événement.
int getX() 
Retourne la coordonnée en X de la souris lors de la génération de l'événement.
int getY()
Retourne la coordonnée en Y de la souris lors de la génération de l'événement.
int getModifiers
Retourne un entier indiquant si les touches maj, alt ou ctrl étaient appuyées au moment de la génération de l'événement.
long getWhen()
Retourne la date et l'heure de la génération de l'événement.
int getButton())
Retourne quel bouton a été cliqué. les trois valeurs possibles sont : MouseEvent.BUTTON1, MouseEvent.BUTTON2MouseEvent.BUTTON3
int getClickCount()
Retourne le nombre de clics associés à cet événement.
interface MouseListener{
   void mouseClicked(MouseEvent  e);
   void mouseEntered(MouseEvent  e);
   void mouseExited(MouseEvent e);
   void mousePressed(MouseEvent e);
   void mouseReleased(MouseEvent e);
}
Tous les composants peuvent être sources de MouseEvent . Lors d'un clic les méthodes sont appelées dans l'ordre suivant :
  1. mousePressed
  2. mouseReleased
  3. mouseClicked

   2 23KeyEvent

Les événements sont générés dans l'ordre :

  1. keyPressed 
  2. keyTyped : pour les touches qui ont un effet sur le texte d'un composant texte.
  3. keyReleased 

Object getSource()
Retourne l'objet source de l'événement.
int getID()
Retourne le type d'événement.
char getKeyChar()
Retourne le caractère correspondant à la touche du clavier, ou java.awt.event.KeyEvent.CHAR_UNDEFINED s'il n'y a pas de caractère associé à la touche (touche de fonction par exemple).
int getKeyCode() 
Retourne le code du caractère correspondant à la touche du clavier.
int getModifiers
Retourne un entier indiquant si les touches maj, alt ou ctrl étaient appuyées au moment de la génération de l'événement.
long getWhen()
Retourne la date et l'heure de la génération de l'événement.
String  getKeyModifiersText(int > mod)
Retourne le modifieur sous forme de chaîne de caractères : Maj+Crtl+Alt.
interface MouseListener{
   void keyTyped(KeyEvent e);
   void keyPressed(KeyEvent e);
   void KeyReleased(KeyEvent e);
}
Tous les composants peuvent être sources de KeyEvent 

3Adaptateur

Un adaptateur XxxAdapter est une classe abstraite qui fourni une implémentation de la classe XxxListener. Les méthodes implémentées sont toutes vides, et ainsi permettent à un utilisateur de l'adaptateur de ne redéfinir que le traitement qui l'intéresse.

Exemple : Un adaptateur qui ne redéfinit que KeyPressed et keyTyped :

composantSource.addKeyListener(new java.awt.event.KeyAdapter() {  
   public void keyPressed(java.awt.event.KeyEvent e){ 
        . . .                     
   }
   public void keyTyped(java.awt.event.KeyEvent e){
       . . . 
   }
});

haut de la page