Академический Документы
Профессиональный Документы
Культура Документы
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
La programmation par
vnement
Problmatique
Comment un objet A peut tre tenu au courant des changements
survenus au sein dun autre objet B ?
Notification
Lorsque l'objet B change d'tat, il envoie une notification l'objet A.
L'objet A ne surveille plus activement. Si B est surveill par plusieurs objets,
les objets seront aussi passifs.
La notification est immdiate.
LO02 Les interfaces graphiques
La programmation par
vnements
Gnralits
La programmation vnementielle repose sur la notification
On distingue
Les objets qui sont observs. Ils sont dit observables.
Les objets qui observent, appels des observateurs (Observer en
anglais)
Principe
Un objet observateur s'enregistre auprs d'un objet qu'il observe.
Ensuite ds qu'un changement dans l'objet observ survient,
l'observateur est notifi du changement d'tat.
Proprits
L'objet observ peut tre observ par plusieurs observateurs
L'observateur peut observer plusieurs objets
L'objet observ possde la matrise de la notification. C'est lui qui
dtermine quand notifier ses observateurs.
LO02 Les interfaces graphiques
La programmation par
vnements
Le patron de conception Observer
Vue gnrale
la version implmente par Java est plus riche que le diagramme
10
Mise en uvre de la
programmation par vnements
Cas gnral
L'interface Observer
public interface Observer {
// o est la source de la notification
// arg est un objet qui reprsente l'vnement
public void update(Observable o, Object arg);
}
La classe Observable
Cf. transparent suivant
LO02 Les interfaces graphiques
11
Mise en uvre de la
programmation par vnements
Cas gnral (cont.)
public class Observable {
// Gestion des observateurs
public void addObserver (Observer o);
public void deleteObserver (Observer o);
public void deleteObservers ();
public int countObservers();
// Gestion du changement
protected void clearChanged();
protected void setChanged();
public boolean hasChanged();
// Notification des observateurs
public void notifyObservers();
public void notifyObservers(Object arg);
}
LO02 Les interfaces graphiques
12
Mise en uvre de la
programmation par vnements
Cas des interfaces graphiques
Les interfaces graphiques utilisent la programmation par vnements
pour rcuprer des informations sur les changements survenus dans
les objets graphiques
Clic de souris sur un bouton
Saisie de texte
13
Mise en uvre de la
programmation par vnements
Evnement
Source
Listener
Mthode
ActionEvent
JButton,
JCheckBoxMenuItem, JComboBox,
JFileChooser,
JList,
JRadioButtonMenuItem, JTextField,
JToogleButton
ActionListener
actionPerformed()
MouseEvent
Tous les
composants
MouseListener
mouseClicked(),
mousePressed(),
mouseReleased(),
mouseEntered(),
mouseExited()
MouseMotionListener mouseDragged(),
mouseMoved()
KeyEvent
LO02 Les interfaces graphiques
KeyListener
keyTyped(),
keyPressed(),
keyReleased()
14
Mise en uvre de la
programmation par vnements
Evnement
FocusEvent
Source
Tous les
composants
TextEvent
WindowEvent
Jdialog, JFrame,
JWindow
Listener
Mthode
FocusListener
focusGained(),
focusLost()
TextListener
textValueChanged()
WindowListener
windowOpened(),
windowClosing(),
WindowClosed(),
windowIconified(),
windowDeiconified(),
windowActivated(),
windowDesactivated()
15
Les adaptateurs
Problmatique
Les couteurs sont des interfaces qui spcifient plusieurs
mthodes. Toutefois, on peut tre intress que par
l'implantation d'un sous-ensemble de ces mthodes.
Les adaptateurs
Les adaptateurs fournissent une implantation vide des
mthodes des diffrentes interfaces des couteurs. Le
programmeur peut ainsi :
Implanter un couteur qui hrite de son adaptateur
Redfinir seulement les mthodes qui l'intresse
On trouve ainsi
MouseAdapter, KeyAdapter, FocusAdapter,
WindowAdapter
LO02 Les interfaces graphiques
16
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
17
La classe compteur
public class Compteur {
}
}
public Compteur () {
this.compteur = 0;
this.compte = false;
}
public void compter() {
this.compte = true;
while (compte) {
compteur++;
this.attendre();
LO02 Les interfaces graphiques
19
20
21
En conclusion
On ne dploie JAMAIS une interface graphique selon cette approche
On essaie TOUJOURS de sparer les diffrents composants de
l'application pour accroitre la modularit, l'extensibilit, la lisibilit du
code
22
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
23
24
La vue
Donne une prsentation du modle
Le contrleur
Rcupre les oprations de l'utilisateur et les traduit
sur le modle
25
1. L'utilisateur
agit sur la vue
2. Les donnes ou
l'tat du modle
changent
3. L'tat de la vue
est mise jour
La vue
LO02 Les interfaces graphiques
5. La vue
interroge le
modle
public Compteur () {
this.compteur = 0;
}
// ...
}
Le modle
26
On dit aussi
que le
contrleur
suit le modle
de stratgie
Le contrleur
coute la
vue : c'est un
couteur
La vue
Le modle et
la vue sont
lis par une
relation
d'observation
Le modle
27
28
Compteur compteur;
JFrame fenetre;
JLabel texte;
JButton demarrer;
29
reservoir.add(texte, BorderLayout.NORTH);
reservoir.add(demarrer, BorderLayout.SOUTH);
demarrer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
compteur.compter();
}
});
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.pack();
fenetre.setVisible(true);
}
public void update(Observable o, Object arg) {
texte.setText("Compteur : " + compteur.getValeur());
}
public static void main(String[] args) {
Compteur c = new Compteur();
VueCompteur vc = new VueCompteur(c);
}
}
LO02 Les interfaces graphiques
30
31
Plan du cours
Introduction
La programmation par vnement
Gestion des vnements Swing : une
premire approche
Le patron de conception Model-ViewControler
Tour d'horizon des composants Swing
32
Prambule
Ce que contient le cours Swing
L'explication des concepts cls pour la conception
d'interfaces graphiques
33
34
Les conteneurs
Les conteneurs
Contiennent un ensemble de composants
La classe JPanel reprsente un conteneur
La classe JComponent reprsente un composant
Problmatique Swing
Comment placer les composants graphiques dans la fentre ?
En fonction de la taille de la fentre ?
35
FlowLayout
Place les composants graphiques les uns la suite des autres
GridLayout
Permet de dfinir une grille
paramtrable qui va contenir
des composants
38
39