précédent |
suivant |
table des matières
événements
Démonstration
Principe
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 qui crée des événements est appelé source. Le
composant source délègue le traitement de l'événement au composant
auditeur.
- Un composant qui traite un événement est appelé auditeur (listener)
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){
}
...
} |
Un
programme utilisant ces différentes classes : |
Source s = new Source();
Auditeur a = new Auditeur();
s.addXxxListener(a);
...
s.removeXxxListener(a);
|
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 {
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());
}
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);
... |
Hiérarchie
Schéma de la hiérarchie simplifiée des événements java : |
|
ActionEvent
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
|
: |
MouseEvent
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.BUTTON2, MouseEvent.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 :
- mousePressed
- mouseReleased
- mouseClicked
|
|
KeyEvent
Les événements sont générés dans l'ordre :
- keyPressed
- keyTyped : pour les touches qui ont un effet sur le texte d'un composant texte.
- 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 |
|
Adaptateur
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