Programmation évènementielle et GUIs en java



Documents pareils
Interfaces graphiques avec l API Swing

Java 7 Les fondamentaux du langage Java

Cours 2 : programmation des interfaces graphiques

Développement Logiciel

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Auto-évaluation Programmation en Java

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

LOGICIEL MARCHES PUBLICS

Table des matières Introduction Démarrage Les composants graphiques... 26

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

GUIDE D UTILISATION. Gestion de compte. à destination des intermédiaires

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Atelier «personnaliser l environnement de l ordinateur mai 2015

Applet pour visualiser les variables «automate» notifiées

GUIDE D UTILISATION. Gestion de compte. à destination des entreprises (Employeurs et Organismes de Formation)

Construire des plug-ins pour SAS Management Console SAS 9.1

OCLOUD BACKUP MINI GUIDE. 1 Ocloud Backup/Mini- Guide

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Mise à jour d avast! et de vos logiciels Ciel

La programmation orientée objet et le langage C++

eevision 2 Guide utilisateur Mail : contact@naotic.fr Tél. +33 (0) Fax. +33 (0)

HTTP Commander. Table des matières. 1-Présentation de HTTP Commander

Introduction à Eclipse

INITIATION A L INFORMATIQUE. MODULE : Initiation à l'environnement Windows XP. Table des matières :

AIDE TECHNIQUE POUR L UTILISATION DE GÉODEQ III VUES D ENSEMBLE DU QUÉBEC

Présentation de la plateforme WINDCHILL. Invitation à rejoindre la plateforme

TP2 : Client d une BDD SqlServer

GUIDE D UTILISATION. Gestion de compte. à destination des CFA

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Composition d un ordinateur :

SFEA. Ce document peut être imprimé au format livret. Guide utilisateurs du site "Se Former en Alsace"

Tutorial pour une application simple

Mes documents Sauvegardés

Sélection du contrôleur

Eclipse atelier Java

SOMMAIRE. Comment se connecter?

Guide d installation CLX.PayMaker Office (3PC)

TP1 : Initiation à Java et Eclipse

NETSUPPORT SCHOOL 7 MAÎTRISEZ VOTRE ESPACE DE TRAVAIL ET CELUI DE VOTRE CLASSE INFORMATIQUE

Programmer en JAVA. par Tama

Logiciel de gestion de caisse et d ardoises

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

Guide pour le bon fonctionnement des applications académiques avec Internet Explorer 7.x

Solutions du chapitre 4

Programmation Orientée Objet

Module 10 : Supplément 2

@telier d'initiation

PROGRAMMATION EVENEMENTIELLE sur EXCEL

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

TP SIN Programmation sur androïde Support : eclipse

Bases Java - Eclipse / Netbeans

Silhouette Studio Leçon N 2

MEGA ITSM Accelerator. Guide de démarrage

Sommaire. 2. L accès aux modules. 1. Aspects techniques. 1.1 Le matériel requis 2

EXTENSION WORDPRESS. Contact Form 7. Proposé par :

Mise à jour Apsynet DataCenter

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

La base de données XML exist. A. Belaïd

Groupe Eyrolles, 2003, ISBN : X

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Design patterns. Design patterns - définition. Design patterns - avantages

L espace de travail de Photoshop

Langage Java. Classe de première SI

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Support de formation «veille informationnelle» IED Dakar, mars 2014

as Architecture des Systèmes d Information

Maîtrisez votre Navigateur

Héritage presque multiple en Java (1/2)

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Instructions relatives à l installation et à la suppression des pilotes d imprimante PostScript et PCL sous Windows, version 8

Utilisation de l éditeur.

Android 4 Les fondamentaux du développement d'applications Java

Projet de développement

Introduction : L accès à Estra et à votre propre espace Connexion Votre espace personnel... 5

Fiche de configuration Configuration liaison SIP Patton Firmware 5.4

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

Formation. Module WEB 4.1. Support de cours

Guide de prise en main de la solution NetExplorer

LES TOUT PREMIERS PAS

ScTools Outil de personnalisation de carte

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

LES TABLETTES : GÉNÉRALITÉS

Introduction à Windows 8

Manuel d installation de Business Objects Web Intelligence Rich Client.

GeoGebra & Microsoft Office 631

Maîtriser le menu contextuel dans un OfficeBean

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

cbox VOS FICHIERS DEVIENNENT MOBILES! INTERFACE WEB MANUEL D UTILISATION

Cartographie Informatique Eclairage Public

Le guide des parents

COURS WINDEV NUMERO 3

Transcription:

Adapté de Géry Casiez et Eric Lecolinet Programmation évènementielle et GUIs en java Sylvain Malacria - www.malacria.fr

Programmation «classique» Programme principal initialise et appelle des fonctions dans un ordre pre-déterminé: - Les éventuels évènements utilisateurs sont «demandés» (programme en pause)

Programmation événementielle Programme principal initialise des variables et les fonctions réagissent aux événements: - Le déroulement est contrôlé par la survenue d événements (dont les actions de l utilisateur) - Boucle principale qui traite les événements (enfouie dans la bibliothèque)

while (true){ if(!queue.isempty()){ event = queue.nextevent(); source = findsourceforevent(event); source.processevent(event); } } File d attente (queue FIFO)

public class MyObject extends JFrame, {... public void keydown(...){... } public void mousepress(...){... } public static void main (String [] args){ new MyObject(); } }

Evénements Swing Evenements «haut niveau» ActionEvent: activer un bouton, un champ de texte TextEvent: modification du texte dans un champ de texte etc. Evenements «bas niveau» MouseEvent: appuyer, relâcher, bouger la souris KeyEvent: appuyer, relâcher une touche du clavier WindowEvent: fermeture, déplacement des fenêtres etc.

Lien composant-application Fonctions de rappel (callbacks) Enregistrées dans le composant à sa création (abonnement) Appelées lorsque l une des opérations du composant est activée (notification) Utilisation du patron de conception Observateur

Pattern observateur/observé Principe associer un (des) observateurs(s) à un (des) objet(s) observé(s) observateur(s) notifié(s) automatiquement quand une certaine condition se produit sur un observé

MVC Modèle Vue Informe la vue d un changement d état Demande état du modèle Actions utilisateur La vue doit être MAJ MAJ du modèle Controleur

MVC Représente le comportement de l application - Contient les données manipulées par l application - Assure la gestion de ces données et leur intégrité - Mise à jour des données (insertion, suppression, modification) - Méthodes pour accéder à ces données Possibilité d avoir plusieurs vues partielles des donnée

MVC Correspond à l interface avec laquelle l utilisateur interagit Présentation des résultats renvoyés par le modèle Réception des actions de l utilisateur (clics souris..) et envoi de ces informations au contrôleur La vue n effectue aucun traitement, se contente d afficher les traitements effectués par le modèle

MVC Gestion des événements de synchronisation pour mettre à jour le modèle Reçoit tous les événements de l utilisateur et enclenche les actions à effectuer Si changement des données, le contrôleur demande la modification des données au modèle Le contrôleur n effectue aucun traitement, ne modifie aucune donnée Peut notifier la vue qu il y a eu une erreur

MVC Modèle asymétrique - Une paire Contrôleur/Vue est associée à un seul modèle - Un modèle peut se voir associé plusieurs paires Contrôleur/ vue Listes des dépendants et notification - Les paires Contrôleur/Vue d un modèle sont enregistrées dans une liste de «dépendants» - Lorsque l état du modèle est modifié, tous les dépendants sont notifiés

Implémentation MVC 3 classes abstraites définissent les comportements génériques des composants MVC Class Model - Mécanismes permettant la gestion des dépendants - Mécanismes de diffusion des notifications Class View - Affiche une représentation du modèle - Transmet les interactions utilisateur au contrôleur Class Controller - Permet le contrôle et la manipulation d un modèle et d une vue

MVC: Exemple d interaction 1. L utilisateur clique sur un bouton de l interface 2. Le contrôleur est notifié de l action de l utilisateur et vérifie la cohérence de cette action 3. Si l action est cohérente, le contrôleur notifie le modèle de l action de l utilisateur (éventuellement modification de l état du modèle) 4. Le modèle notifie les vues qu un changement d état a eu lieu 5. Les vues utilisent le modèle pour générer l interface appropriée 6. Attente des événements suivants

Conclusion sur MVC Avantages - Vues multiples synchronisées - Vues et contrôleurs modulaires - Développement de composants réutilisables Inconvénients - Complexité de communication entre les composants (principalement entre C et V)

Toolkits graphiques Java Il y en a trois! AWT Components, obsolète SWT libre, initié par IBM / Eclipse Swing supporté par Sun/Oracle tous (+ ou -) multi-plateformes Swing repose sur AWT mais Swing est différent d AWT

Menu Window TextFields Containers Widgets

Composants graphiques Haut niveau Fenêtres Dialog (certains prédéfinis) Applet (web)

Composants graphiques Containers Combiner (JPanel) Manipuler (Onglets, sliders, barres de défilement) Organiser des composants de manière spécifique (Barres d outils, menus, etc.)

Composants graphiques Containers (panel, viewport, scrollpane, toolbar, list,menu) Boutons Text Sliders, etc

Composants graphiques Interacteurs (Widgets)

Disposition - hiérarchie Arbre d instanciation arbre de filiation des instances de composants graphiques

Arbre d instanciation Objet de + haut niveau JFrame ou JApplet Conteneur peuvent être imbriqués En particulier JPanel

Layout managers Disposition

Disposition Border Layout Layout manager par défaut pour les ContentPane (conteneur de composant haut niveau comme fenêtre, applet, etc.) Place les composants dans 5 zones (North, South, East, West, Center) Un seul composant par zone (composants imbriqués nécessaires)

Disposition Flow layout Layout manager par défaut pour les JPanels Place les composants sur une ligne, de gauche à droite (tant qu il y a de la place)

Disposition Grid Layout Dispose les éléments dans une grille n x m Pas indispensable de spécifier n ET m Très utile pour prototypage rapide Dans cet exemple: 1 gridlayout 0 x 2 et un autre 2 x 3

Disposition Other layouts Nombreux layout managers différents Nécessité éventuelle de combiner et/ou imbriquer différents layouts Recherchez sur le web : «a visual guide to layout managers»

Comment ajouter un listener? Exemple de l ActionListener (JButton) ActionEvents envoyés quand le bouton est cliqué ActionListener interface à implémenter qui intercepte ces ActionEvents et proceed

A simple RGB chooser

Avant de finir Site web complet pour débuter avec Swing http://docs.oracle.com/javase/tutorial/uiswing/ Liste longue d événements en fonction des composants Consultez la documentation!

Avant de finir Evénements utiles pour animations classe javax.swing.timer (attention, pas java.util.timer) Timer timer = new Timer(speed, this); timer.start(); speed = pause en ms entre chaque événement du timer this = classe qui reçoit l évènement (ActionListener)

Notification centers Avant de finir Dispo sous Cocoa, Android Un objet notifie avec une «clé» N importe quel objet peut écouter (sous reserve de connaitre la clé) Plus souple, mais moins de contrôle Centre de notifications Register for «bla» Dispatch notification «bla» Register for «bla» Send event «bla» Objet 1 Objet 2 Objet source