LOG2420 ― Analyse et concepon d`interfaces utilisateur
Transcription
LOG2420 ― Analyse et concepon d`interfaces utilisateur
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