LOG2420 ― Analyse et concepon d`interfaces utilisateur

publicité
Introduction
Événements
LOG2420 ― Analyse et concep on d'interfaces
utilisateur
Bibliothèque Swing et événements
Michel C. Desmarais, François Lemieux
Génie
é informatique
f
École Polytechnique de Montréal
Automne 2010
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
1/9
Introduction
Événements
Java Swing
Bibliothèque développée par Sun pour les interfaces
graphiques
h
Java
Utilise la bibliothèque AWT comme base pour :
gestion
ti d‘é
d‘événements
é
t
rendu (dessin) de bas niveau
certains composants
p
de base
etc.
Approche relativement récente et selon l‘état de l'art
Très bien documentée :
java.sun.com/docs/books/tutorial/uiswing/index.html
j
java.sun.com/docs/books/tutorial/ui/index.html
/d /b k /t t i l/ i/i d ht l
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
2/9
Introduction
Événements
Les événements
Générés par:
L'utilisateur à travers le système de fenêtrage
Des objets comme des composants
un filtre « sémantique »
Gérés par des « écouteurs » (listeners)
Les écouteurs sont liés à des objets sources d‘événements,
généralement des composants
composants, par une méthode qui
effectue les fonctions de rappel (callbacks),
Exemple. :
composantSource addActionListener(composantRécepteur)
composantSource.addActionListener(composantRécepteur)
Un écouteur doit implémenter l'interface du type
d‘événements écoutés : actionPerformed(actionEvent
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
e)
3/9
Introduction
Événements
Un écouteur
public class SwingApplication implements ActionListener {
...
JButton button = new JButton("I'm a Swing button!");
button.addActionListener(this);
....
// code qui gère l‘événement
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText(labelPrefix + numClicks);
}
}
java.sun.com/docs/books/tutorial/uiswing/learn/example2.html#handlingEvents
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
4/9
Introduction
Événements
Types d’événements et d’écouteurs
ActionListener: Cliquer un bouton ou tape « retour » dans un
champ de saisie ou un item de menu
WindowListener: Fermer d'une fenêtre principale (frame )
MouseListener: Cliquer
li
un b
bouton d
de souris
i sur un composant
MouseMotionListener : Passer avec la souris sur un
composant
ComponentListener: Composant devient visible
FocusListener : Composant obtient le focus
ListSelectionListener: Changement de sélection d'une
liste ou d’une cellule de tableau
PropertyChangeList
h
i Changement
Ch
d'
d'une propriété
ié é d'
d'un
composant comme le texte d'un libellé
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
5/9
Introduction
Événements
Flexibilité de connexion
Les composants peuvent se connecter
(s‘écouter) de façon très flexible.
flexible Ainsi,
Ainsi on
peut avoir toutes sortes de topologies :
un objet qui écoute un plusieurs sources
d‘événements
une source d‘événement qui a un ou plusieurs
écouteurs
un écouteur pour tous les événements,
cet écouteur pouvant à son tour être écouté par tous
les objets qui gèrent des événements
Pour implémenter des mécanismes de
transmission d’événement entre les objets:
java.sun.com/developer/Books/swing
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
6/9
Introduction
Événements
La concurrence
Swing a un fil d'exécution pour les événements
Lorsqu'un événement se produit, la méthode des
écouteurs correspondants est exécutée à partir de ce
fl
fil
On peut exécuter du code sur ce fil avec
SwingUtilities.invokeLater()
S
ingUtilities in okeLater() :
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
}
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
7/9
Introduction
Événements
La concurrence (suite)
Lorsque le code d'un événement nécessite beaucoup
de temps, qu'elle boucle ou qu'elle attend, le
traitement des prochains événements sera ralenti ou
arrêté selon le cas
arrêté,
Il faut donc exécuter le code à partir d'un autre fil pour
éviter de bloquer ou ralentir ll'interface
interface
java.sun.com/docs/books/tutorial/uiswing/concurrency/simple.html
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
8/9
Introduction
Événements
Concept importants
Les événements sont de plusieurs types
Un objet écoute une source d‘événements d'un type
donné et s'engage à activer l'interface correspondante
LOG2420 ‐ Analyse et conception d'interfaces utilisateur – Bibliothèque Swing et événements
9/9
Téléchargement