Vous êtes sur la page 1sur 33

Chapitre IV

Toolkit graphique
Java swing

MOHAMMED
Gestion des événements
2
 Gestion des interactions avec
l'utilisateur : souris, clavier, ..
 Gestion des changements d'états
des composants ou de valeur des
données affichées
 Il doit être possible de répondre à
ces événements.

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Gestion des événements
3
• L'utilisateur effectue
 une action au niveau de l'interface (clic
souris, sélection d'un item dans une liste,
etc) alors un événement se produit.
• Lorsqu'un événement se produit
 il est reçu par le composant avec lequel
l'utilisateur interagit (par exemple un
bouton, un combo box, un champ de texte,
etc.).
 Ce composant transmet cet événement à
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
un autre objet, un écouteur (Listener) qui
Gestion des évènements
4
 Java propose la gestion des
événements à travers le modèle
Evénement/Ecouteur

 à chaque type d'événement


susceptible d'être traité est associé
un objet événement créé quand
l'événement survient.
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Le modèle événementiel
5 JAVA
 Le modèle événementiel de JAVA est
composé :

d'objets sources d'événements


d'objets événements
d'objets récepteurs d'événements

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Le modèle événementiel
6 JAVA

Récepteur actionPerformed(unEvnt ) JButton Source


d’événement MonBouton d’événement
unObjet
s 2 s
Activer
getSource()

3 1 new ActionEvent( )

ActionEvent
unEvnt

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Gestion des événements
7
 les objets qui créent des événements
sont les sources d'événements.
 Les objets qui déclenchent un
traitement quand l'événement
survient sont des objets écouteurs
(Listener)
 Le comportement des composants
est géré par l’émission et le
traitement d’événements créés par
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
les composants suite à une action.
Gestion des événements
8
 Un événement est un objet qui
encapsule des informations sur la
source de l'événement et sa nature.
 Exemple : un événement clavier
décrit
la touche concernée
lanature de l'événement (appui,
appui + relâchement, relâchement)
IHM le composant actif lors de
– CHAPITRE IV: Toolkit graphique JAVA -Swing
Gestion des événements
9

 Chaque composant est susceptible


de générer certains événements.

 Un composant n'est pas concerné


par tous les types d'événements.

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Hiérarchie des événements
10
Gestion des événements
11
 Tout composant peut être source
d’événement (événements souris,
événements clavier, ...)
 Chaque source d’événement connait
les objets qui l’écoutent et leur
envoie les événements qu’elle
produit.
 Les objets qui écoutent (listeners),
sont enregistrés auprès de la source.
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Ecouteur
12
 Un écouteur est un objet qui traite
un ou plusieurs événements.
 Un écouteur doit être attaché à une
source d'événement qui fait appel à
ses méthodes de traitement
d'événements.

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Catégories ou types
13 d'événements
 Plusieurs types d'événements sont définis
dans le package java.awt.event.
 Pour chaque catégorie d'événements, il
existe une interface qui doit être définie
par toute classe souhaitant recevoir cette
catégorie d’événements.
 Cette interface exige que toutes ses
méthodes soient définies.
 Ces méthodes sont appelées lorsque
des événements correspondants
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
surviennent.
Catégories ou types
14 d'événements
Catégorie Nom de Méthodes
l’interface
Action
§ Clic sur un
bouton
ActionListene actionPerformed
§ Retour chariot
dans une zone r (ActionEvent)
de texte
§…

Item
§ Sélection d’un itemStateChanged
item dans une ItemListener
IHM – CHAPITRE IV: Toolkit graphique(ItemEvent)
JAVA -Swing
liste
Catégories ou types
15 d'événements
Nom de
Catégorie Méthodes
l’interface
keyPressed (KeyEvent) :
appelée lorsqu' une touche
Key est enfoncée
§Pour la keyReleased (KeyEvent) :
gestion appelée lorsqu' une touche
KeyListene est relâché
des r
événeme
keyTyped (KeyEvent) :
nts
appelée lorsqu' une touche
clavier
hors les touches d'actions
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
(alt, chift, ctrl, F1, home,…)
Catégories ou types
16 d'événements
Nom de
Catégorie Méthodes
l’interface
Focus focusGained
(FocusEvent) :
Gestion appelée lorsque le
d'acquisition composant aquit le focus
et perte du FocusListen focusLost (FocusEvent) :
focus er appelée lorsque le
composant perd le focus

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Catégories ou types
17 d'événements
Catégor
Nom de l’interface Méthodes
ie
mouseDragged
MouseMotionListen (MouseEvent)
er mouseMoved
(MouseEvent)
Mouse mousePressed
(MouseEvent)
Gestion mouseReleased
des (MouseEvent)
évèneme
nts de la MouseListener
mouseEntered
souris (MouseEvent)
mouseExited
IHM – CHAPITRE IV: Toolkit graphique(MouseEvent)
JAVA -Swing
Catégories ou types
18 d'événements
Nom de
Catégorie Méthodes
l’interface
Adjustme
nt
AdjustmentList adjustmentValueChanged
Déplaceme
nt d'une ener (AdjustmentEvent)
barre de
défilement

Compone componentMoved
nt (ComponentEvent)
componentHiddent
Savoir si un ComponentLis (ComponentEvent)
composant tenerIV: Toolkit graphique
IHM – CHAPITRE componentResize
JAVA -Swing
a été (ComponentEvent)
Catégories ou types
19 d'événements
Catégori Nom de
Méthodes
e l’interface
Containe
r

Ajout,
componentAdded
suppressi ContainerListe (ContainerEvent)
on d'un ner componentRemoved(Contai
composan nerEvent)
t dans un
Conteneu
r

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Catégories ou types
20 d'événements
Catégori Nom de
Méthodes
e l’interface

Text
Changem
ent de textValueChanged(TextEven
valeur TextListener
dans une
t)
zone de
texte

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Catégories ou types
21 d'événements
Nom de
Catégorie Méthodes
l’interface
windowClosing
Windo (WindowEvent)
windowOpened
w (WindowEvent)
windowIconified
pour gérer
les (WindowEvent
évènemen WindowListe windowDeiconified
ts Fenêtre ner (WindowEvent)
Minimisati windowClosed
on, (WindowEvent)
maximisati
on, windowActivated
Fermeture, (WindowEvent)
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Processus de gestion des
22 événements
1. Implementation d'une interface
Listener
Une classe susceptible de traîter un
type d'évènement doit implementer
l'interface "Listener" correspondente.

MouseListener,
MouseMoveListener, KeyListener,
IHM – etc.
CHAPITRE IV: Toolkit graphique JAVA -Swing
Processus de gestion des
23 événements
2. Enregistrement de l'écouteur auprès
de l'objet source.
. Chaque classe composant (bouton,
list, combobox,...) définit la méthode
add<nom>Listener
(<nom>Listener );
. <nom> : represente un type
d'évènements :
Mouse, key, ...
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Processus de gestion des
24 événements
3. Définitions des méthodes de
l'interface implémenté
Exemple : implementation de la méthode
mouseClicked de l'interface MouseListener

public class MyListener implements MouseListener {


public void mouseClicked(MouseEvent e) {
System.out.println(“mouse clicked”);
} – CHAPITRE IV: Toolkit graphique JAVA -Swing
IHM
Processus de gestion des
événements
import java.awt.event.*;
Implémentation
d'une interface
Exemple
import javax.swing.JButton;
import javax.swing.JFrame;
listener
ActionListener
class MonAction implements ActionListener {
public void actionPerformed (ActionEvent e) {
System.out.println ("Une action s'est produit") ;}
}

public class TestBouton {


public TestBouton(){
JFrame f = new JFrame ("TestBouton");Enregistrement de
l'écouteur auprès du
JButton b = new JButton ("Cliquer ici");
f.getContentPane().add (b) ; bouton B
f.pack (); f.setVisible (true) ;
b.addActionListener (new MonAction ());}

public static void main(String args[]) {


TestBouton test = new TestBouton();}
}
import javax.swing.JButton;
import javax.swing.JFrame; Implémentation de
import java.awt.BorderLayout; l'interface ActionListener
import java.awt.event.*;

public class EssaiActionEvent1 extends JFrame implements ActionListener


{
public static void main(String args[]){
EssaiActionEvent1 F= new EssaiActionEvent1();
}
public EssaiActionEvent1(){
On enregistre l’écouteur
super("Utilisation d’un ActionEvent"); (Fenêtre) auprès de
JButton b = new JButton("action"); l’objet source "b"
b.addActionListener(this);
getContentPane().add(BorderLayout.CENTER,b);
pack();
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public void actionPerformed( ActionEvent e ){ Lorsque l'on clique sur le
setTitle("bouton cliqué !"); bouton dans l’interface, le
} titre de la fenêtre change
}
27
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class EssaiActionEvent2 extends JFrame


implements ActionListener
{ private JButton b1,b2;
public static void main(String args[])
{EssaiActionEvent2 f = new EssaiActionEvent2();}

public EssaiActionEvent2() { Les 2 boutons ont le même


super("Utilisation d’un ActionEvent"); écouteur (la fenêtre)
b1 = new JButton("action1");
b2 = new JButton("action2");
b1.addActionListener(this);
b2.addActionListener(this);
getContentPane().add(BorderLayout.CENTER,b1); e.getSource() renvoie l'objet
getContentPane().add(BorderLayout.SOUTH,b2); source de l’événement. On
pack();setVisible(true); effectue un test sur les
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); boutons (on compare les
} références)
public void actionPerformed( ActionEvent e ) {
if (e.getSource() == b1) setTitle("action1 cliqué");
if (e.getSource() == b2) setTitle("action2 cliqué");
}}
28
import java.awt.event.*;
import javax.swing.JFrame;

public class WinEvt extends JFrame implements WindowListener


{
public static void main(String[] args) {
WinEvt f= new WinEvt();
Implémenter cette interface impose
} l’implémentation de plusieurs méthodes
public WinEvt() {
super("Test fermeture Fenetre");
La fenêtre est son propre écouteur
addWindowListener(this);
pack(); setVisible(true);this.setSize(350,200);
}
public void windowOpened(WindowEvent e){}
public void windowClosing(WindowEvent e) {System.exit(0);}
public void windowClosed(WindowEvent e){} WindowClosing()
public void windowIconified(WindowEvent e){} est appelé
public void windowDeiconified(WindowEvent e){} lorsque l'on
clique sur la
public void windowActivated(WindowEvent e){} croix de la
public void windowDeactivated(WindowEvent e){} fenêtre
}
Les adaptateurs
29

Les classes « Adapter » permettent une


mise en œuvre simple de l'écoute
d'événements.
 Ce sont des classes qui implémentent
les écouteurs d'événements possédant
plusieurs méthodes en définissant un
corps vide pour chacune d'entre elles.
 Plutôt que d'implémenter l'intégralité
d'une interface dont une seule méthode
est pertinente pour résoudre
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
un
problème donné, une alternative est
Les adaptateurs (Adapter)
30

Classe Adaptateur Interface


ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
FocusAdapter FocusAdapter
KeyAdapter KeyListener
MouseAdapter MouseListener
MouseMotionAdapter MouseMotionListener
WindowAdapter WindowListener
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Exemple : gestion des événements fenêtres

Solution en implémentant l’interface


class FermetureFen implements WindowListener
{
public void windowClosing (WindowEvent e) {System.exit(0);}
public void windowClosed (WindowEvent e) {}
public void windowIconified (WindowEvent e) {}
public void windowOpened (WindowEvent e) {}
public void windowDeiconified (WindowEvent e) {}
public void windowActivated (WindowEvent e) {}
public void windowDeactivated (WindowEvent e) {}
}

Solution en utilisant un WindowAdapter


class FermetureFen extends WindowAdapter
{
public void windowClosing (WindowEvent e) {System.exit(0);}
}
Références bibliographiques
32

1. Comment programmer en Java,


Claude Delannoy, Edition Eyrolles.
2. JAVA How to program, Deitel et
Associates Edition Prentice Hall

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


33

Fin
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing

Vous aimerez peut-être aussi