Académique Documents
Professionnel Documents
Culture Documents
Plan du cours
Introduction lIHM en Java. Interfaces graphiques simples. Gestion des couleurs. Gestion de la prsentation. Gestion dvnements graphiques. Architecture dune application Java. Interface de bases de donnes JDBC.
Linterface dsigne le vecteur (le mdia) par lequel deux lments communiquent. Le systme interactif est compos des deux lments en communication et du vecteur de communication. Interactions: Actions (mutuelles) entre acteurs. Interfaces: Dispositifs techniques ou mdias de communication.
Systme Interactif
Programme Source
Interface Utilisateur
Etude des techniques de conception de systmes informatiques qui soient ergonomiques (efficaces et gnralement faciles utiliser). Etude des techniques permettant linteraction entre les humains et les ordinateurs (ou entre humains laide dordinateurs).
Enfin, labrviation IHM fait gnralement rfrence soit lInteraction Homme-Machine soit lInterface HommeMachine.
Pr. Mohamed NAIMI | Cours_IHM | ESTB 7
Botes outils
En Java, les IHM peuvent tre conues laide de botes outils (GUI Toolkits) 2D. Ces botes outils permettent de spcifier les deux composants principaux dun systme interactif Java:
1. 2. 3.
Structuration de lespace daffichage. Partage de la ressource cran. Gestion de la communication entre les applications. Gestion des fentres: Modle de fentrage. Taille. Emplacement. Autonomie vis--vis de laffichage et des entres.
Avec superposition
Hirarchique
10
11
12
AWT (Abstract Windowing Toolkit): Simple, petite et limite. SWING: Puissante, grosse et extensible.
La plupart de classes concernant ces deux botes outils se trouvent dans lun des deux paquetages javax.swing ou java.awt.
13
14
15
17
Le code suivant indique comment crer un programme graphique simple laide de la classe JFrame: La classe MainFrame est dfinie comme extension de la classe JFrame; elle permet de dfinir un objet graphique sous forme dune fentre avec un bouton de fermeture, un titre, une taille prcise et un emplacement prcis. La classe TestMainFrame permet de tester la classe MainFrame.
18
19
20
Le programme suivant modifie celui de lexemple prcdent en plaant la fentre au centre de lcran et en dfinissant sa taille celle de lcran.
21
22
23
Le programme suivant modifie celui de lexemple 2 prcdent en modifiant la taille de la fentre et en y ajoutant un message textuel.
25
26
27
2)
Les composants: Objets susceptibles dtre affichs lcran et dinteragir avec lutilisateur. Par exemple, le bouton de fermeture est un composant. Les conteneurs: Composants qui contiennent dautres composants. Par exemple, une fentre est un conteneur tandis quun bouton ne lest pas.
28
4)
Les fentres: Conteneurs ayant des proprits spcifiques, notamment une bote outils facilitant la cration des composants. Les cadres: Fentres composes dune barre de titre, une barre de menus, une bordure, un curseur et une image dicne. Les cadres sont des objets standard lors de la cration des graphiques.
29
2)
Le composant peut tre ajout directement au panneau de contenu de la fentre. Le composant peut tre ajout un conteneur intermdiaire qui est, lui-mme, ajout au panneau de contenu de la fentre.
Dans le deuxime cas, la classe JPanel peut servir comme conteneur intermdiaire.
30
31
Le programme suivant modifie celui de lexemple prcdent en ajoutant un objet JPanel destin contenir lobjet JLabel qui sert laffichage dun contenu textuel: La classe MainPanel est dfinie comme extension de la classe JPanel. Cette classe demande au constructeur dattribuer la couleur noir larrire plan du panneau, puis de crer un objet JLabel permettant dafficher un texte de couleur jaune. Ensuite, lobjet JLabel est ajout lobjet JPanel qui, son tour, est ajout lobjet JFrame.
32
33
34
35
37
La classe Color dfinit 13 champs (public static final) pour les couleurs: black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow.
38
Chacun des 3 entiers r, g et b est compris entre 0 et 255. Ces 3 nombres identifient respectivement la quantit de rouge, de vert et de bleu utilise pour crer la couleur.
39
Plus les nombres sont bas, plus les couleurs sont sombres et plus ils sont levs, plus les couleurs sont claires: Le code RGB du noir est: (0, 0, 0). Le code RGB du blanc est: (255, 255, 255).
40
41
Le programme suivant modifie celui de lexemple prcdent en affichant une srie dobjets JPanel ayant, chacun, une couleur diffrente: La classe ColoredPanel permet de construire un panneau color avec, ventuellement, une tiquette (un texte) qui saffiche sur le panneau. Cette classe dfinit galement un objet Border qui permet dajouter une bordure noire au panneau.
42
43
44
45
46
Cet exemple cre une interface graphique simple place au coin suprieur droit de lcran et dont la taille est gale 1/9 celle de lcran. Elle contient galement un panneau principal darrireplan blanc qui contient, son tour, 3 panneaux secondaires dont les couleurs respectives des arrire-plans sont le dor, laigue-marine et le pourpre. Chacun de ces 3 panneaux secondaires contient un texte qui porte le nom de la couleur de son arrire-plan. Les couleurs sont dfinies en utilisant le code RGB: Dor: (255, 215, 0). Aigue-marine: (127, 255, 212). Pourpre: (160, 32, 240).
47
48
49
ColoredPanel(int r, int g, int b, String texte) { setBackground(new Color(r, g, b)); setBorder(ligneRouge); add(new JLabel(texte)); }
50
51
Gestion de la prsentation
53
54
Le programme suivant spcifie la prsentation du panneau principal en utilisant le gestionnaire GridLayout: Le panneau principal est cr dans la classe MainFrame et est prsent sous forme dune grille de 4 lignes et 7 colonnes. Ensuite, 26 panneaux tiquets sont ajouts au panneau principal. Ces 26 panneaux et leurs tiquettes vont constituer les cellules de la grille.
55
56
57
58
59
Le programme suivant cre un panneau principal en utilisant le gestionnaire BorderLayout: Le gestionnaire BorderLayout divise le panneau principal en 5 panneaux tiquets. Les tiquettes sont centres horizontalement dans chacune des 5 sections. De plus, les largeurs des sections Ouest et Est sont ajustes la taille de leur contenu, tandis que celles des 3 autres sections sont tendues sur toute la largeur du panneau principal.
60
61
62
63
64
une action au niveau de l'interface utilisateur (clic souris, slection d'un lment item-,).
il est reu par le composant avec lequel l'utilisateur interagit (par exemple, un bouton, un curseur, un champ de texte, etc.). Ce composant transmet cet vnement un autre objet; un couteur qui possde une mthode pour traiter lvnement: Cette mthode reoit lobjet vnement gnr de faon traiter l'interaction de l'utilisateur.
66
Un objet couteur est l'instance d'une classe implmentant l'interface EventListener (ou lune de ses sous-interfaces). Une source d'vnements est un objet pouvant recenser des objets couteurs et leur envoyer des objets vnements. la source d'vnements envoie un objet vnement correspondant tous ses couteurs. Les objets couteurs utilisent alors l'information contenue dans l'objet vnement pour dterminer leur rponse.
67
Par exemple, une classe hritant de Frame implmentera les interfaces MouseMotionListener (pour les dplacements souris) et MouseListener (pour les clics souris).
Chaque composant de lAWT est conu pour tre la source dun ou plusieurs types d'vnements particuliers:
Cela se voit notamment grce la prsence dans la classe de composant d'une mthode nomme addXXXListener().
68
Par exemple, getX() et getY() sur un MouseEvent retournent les coordonnes de la position du pointeur de la souris. Une information gnralement utile quelque soit le type dvnement est la source de cet vnement que lon obtient avec la mthode getSource().
69
70
Cette interface exige qu'une ou plusieurs mthodes soient dfinies. Ces mthodes sont appeles lorsque des vnements particuliers surviennent.
71
Key
KeyListener
Focus
FocusListener
72
Window
WindowListener
Container Text
ContainerListener TextListener
73
Action (clic) sur un bouton, retour chariot dans une zone de texte, Fermeture, rduction,... Changement de valeur dans une zone de texte. Slection dun lment (item) dans une liste.
WindowListener:
TextListener:
ItemListener
74
Clic, enfoncement/relchement des boutons de la souris, etc. Dplacement de la souris, drag&drop avec la souris, etc. Dplacement d'une chelle. Savoir si un composant a t cach, affich
MouseMotionListener:
AdjustmentListener:
ComponentListener:
75
Ajout d'un composant dans un conteneur. Pour savoir si un lment a le "focus". Pour la gestion des vnements clavier.
FocusListener:
KeyListener:
76
77
Le programme de cet exemple cre un bouton simple portant le texte Cliquer-ici! . Le fait de cliquer sur ce bouton affichera le message Une action a eu lieu. .
78
79
Le programme suivant affiche une fentre qui occupe tout lcran et contient trois boutons tiquets Rouge, Bleu et Vert. Lorsque lutilisateur appuie sur lun de ces boutons, la couleur correspondante est applique la totalit de la fentre. La classe ButtonPanel cre trois objets JButton. Chaque bouton a son propre auditeur daction qui permet de dfinir sa couleur. Les trois auditeurs daction sont des instances de la classe interne ColorAction. Cette dernire dfinit la mthode actionPerformed() qui se contente de remplacer la couleur darrire-plan du panneau principal par celle spcifie comme argument du constructeur.
80
81
82
83
public void actionPerformed(ActionEvent e) { setBackground(couleur); } } // Fin de la classe interne ColorAction } // Fin de la classe ButtonPanel
84
Elle permet lutilisateur de saisir un contenu textuel. Le texte saisi peut tre manipul (copi, modifi, supprim).
85
Le programme suivant lit un entier dans un champ de texte (objet de type JTextField), puis il laffiche sous forme de temprature exprime en Fahrenheit et en Celsius. La classe TemperaturePanel dfinit la mthode actionPerformed() qui permet de convertir la temprature Fahrenheit saisie dans le champ de texte en une temprature Celsius. Cette action a lieu au moment o lutilisateur appuie sur la touche Entre . Le panneau est dsign comme lauditeur daction du champ de texte. La temprature Fahrenheit est dabord lue grce la mthode getText(), puis convertie en temprature Celsius.
86
87
88
89
90
91
Permettre un utilisateur de saisir une suite de mots. Mettre la suite de mots saisie sous forme de lettres majuscules ds que lutilisateur clique sur un bouton. Arrter lexcution de lapplication lorsque lutilisateur clique sur un autre bouton.
92
93
94
95
96
97
98
99
Il sagit dabord dassocier au bouton "CONVERTIR" un traitement informatique adquat: Lorsque lutilisateur clique sur ce bouton, lapplication doit dabord transformer la suite de mots saisie dans le premier champ textuel en lettres majuscules, puis afficher le rsultat au sein du deuxime champ textuel. Il sagit ensuite dassocier au bouton "QUITTER" un traitement informatique adquat: Un clic sur ce bouton doit mettre fin lexcution de lapplication.
100
101
102
103
104
105
106
107
108
109
Les donnes et leur manipulation. La reprsentation des donnes. La gestion des interactions utilisateur/application.
111
Dfinition des donnes et de leurs structures ainsi que les oprations spcifiques sur ces donnes: Description des donnes manipules par l'application et dfinition des mthodes de traitement de ces donnes:
Remarque:
Le modle regroupe toutes les classes qui dcrivent les objets du domaine tudi. Par exemple la classe Personne et ses drives sil sagit dtudier un ensemble de personnes.
112
Forme de prsentation des donnes lutilisateur en vue de les exploiter: Affichage des donnes via une interface graphique:
Remarque:
La vue n'effectue aucun traitement, elle se contente d'afficher les rsultats des traitements effectus par le modle, et de permettre l'utilisateur d'interagir avec elle.
113
Traduction des interactions utilisateur/interface graphique par des appels de mthodes sur le modle: Slection de la vue approprie en se basant sur ltat du modle:
Remarque:
Le contrleur n'effectue aucun traitement, ne modifie aucune donne, il analyse la requte du client et se contente d'appeler le modle adquat et de renvoyer la vue souhaite.
114
View
Controller
View
Model
3. Modification interne
116
Le contrleur analyse dabord cette requte. Ensuite, ce contrleur demande au modle appropri d'effectuer les traitements requis. Puis, il renvoie la vue adapte.
117
Modle: - Les attributs et mthodes spcifique une application. - Produire un rsultat afficher la Vue.
Contrleur: - Un objet capable dcouter les vnements. - Traitements selon chaque vnement capt (appeler la mthode approprie de Vue pour le traiter).
118
Cette interface graphique est celle dune application agenda qui regroupe lensemble des noms, adresses et numros de tlphone des personnes enregistres.
Pr. Mohamed NAIMI | Cours_IHM | ESTB 120
ii.
iii.
iv.
Une fois que lutilisateur a rempli les champs NOM , Adresse et Tlphone , il doit cliquer sur le bouton AJOUTER pour enregistrer ces valeurs au sein de lagenda. Lorsque lutilisateur clique sur le bouton << Prcdent , il obtient le nom, ladresse et le numro de tlphone de la personne prcdente enregistre dans lagenda. Lorsque lutilisateur clique sur le bouton Suivant >> , il obtient le nom, ladresse et le numro de tlphone de la personne suivante enregistre dans lagenda. Lorsque lutilisateur clique sur le bouton QUITTER , toutes les informations insres dans lagenda sont sauvegardes au sein dun fichier.
121
Ce programme doit tre construit selon larchitecture MVC en distinguant les trois parties: Modle, Vue et Contrleur. Il doit galement assurer la srialisation des donnes (sauvegarde des objets en tant quobjets en fin de session et restauration des objets en dbut de session).
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Dans le programme propos prcdemment (Solution 1), on peut remarquer que larchitecture MVC nest pas vraiment respecte 100%. En effet, la classe Fenetre qui sert la construction de linterface graphique joue aussi le rle de classe couteur. Cette classe joue donc la fois le rle de Vue et celui de Contrleur. Par ailleurs, le rle de Modle est jou par les classes Personne et Gestion_Agenda. Une solution respectant larchitecture MVC consiste dfinir une classe couteur ou des classes couteurs, indpendante(s) de la classe Fenetre, pour jouer le rle de Contrleur des interactions utilisateur/agenda.
137
Introduction
JDBC (Java DataBase Connectivity) est une collection de classes et dinterfaces permettant daccder une base de donnes depuis un programme Java. Un pilote est galement indispensable pour interprter les instructions JDBC, les traduire et les transmettre la base:
Le pont JDBC-ODBC permet une application Java daccder une base de donnes de la plateforme Windows.
139
Classes JDBC
Classe
DriverManager
Utilit
Permet de lier un programme Java une base de donnes.
Connection
Statement
Permet de crer et denvoyer des commandes SQL la base de donnes. Permet de rcuprer et de traiter les donnes envoyes par la base de donnes.
ResultSet
140
2.
3.
4. 5. 6.
7.
Ouvrir le panneau de configuration, ensuite Outils dadministration , puis Sources de donnes (ODBC) . Dans la fentre Administrateur de sources de donnes , slectionner MS Access Database , puis cliquer sur le bouton Ajouter de longlet Sources de donnes utilisateur . Dans la bote de dialogue Crer une nouvelle source de donnes , choisir le pilote Microsoft Access Driver (*.mdb) , puis cliquer sur Terminer . Donner un nom la nouvelle connexion. Cliquer sur le bouton Slectionner pour choisir la base de donnes. Il est galement possible de verrouiller la nouvelle connexion via un nom dutilisateur et un mot de passe en cliquant sur le bouton Avanc . Valider en cliquant sur le bouton OK .
141
2.
142
Crer un objet Statement pour pouvoir envoyer des commandes SQL la base:
Statement commande = null; try { commande = connexion.createStatement(); }
4.
143
6.
7.
Fermer la connexion:
connexion.close(); Pr. Mohamed NAIMI | Cours_IHM | ESTB 144
Exemple rcapitulatif
Le programme correspondant cet exemple sera donn sous forme dun fichier source Java (ConnexionBDD.java). Ce programme tablit une connexion avec une petite base de donnes Access constitue dune seule table appele Rgions . Le programme permet aussi dajouter un enregistrement la table Rgions . Le programme permet galement de lire et dafficher les donnes de tous les champs de la table Rgions .
145