Transcription of Programmation de l’interface graphique en Java
1 Chapitre 5 Programmation de l interfacegraphique en JavaNous avons vu, lors de l initiation `a l informatique, les deux fa cons d utiliser l interpr eteur decommandes : la m ethode console, en ecrivant des lignes de commandes, ou gr ace `a une interfacegraphique (la seule fa con de faire pour MacOs jusqu `a MacOs X, gr ace `a Windows sur PC ou `a X-Window avec Unix). Le moment est venu pour nous de programmerune telle interface graphiquepour les programmes que nous 5. Programmation DE L interface graphique EN Etude g en L interface homme Jusqu `a maintenant, nous nous sommes surtout consacr es, en Programmation , aux cal-culs que r ealisait notre programme, sans trop nous pr eoccuper de la fa con d entrer les donn eeset de sortir les r esultats. L interface homme machine(on utilise egalement l acronymeIHM)s int eresse `a la fa con d entrer les donn ees et de sortirles r esultats.
2 Evolution de l interface homme Depuis l apparition des ordinateurs `a la fin des ann ees1940, l interface homme machine a evolu e : Pour les tout premiers ordinateurs, il fallait enti`erementrec ablerla machine pour chaqueprogramme, mais egalement pour entrer les donn ees. Il s agit visiblement du niveau z erode l interface homme machine. Une premi`ere evolution fut l apparition depanneaux d interrupteurspour les entr ees et depanneaux de points lumineuxpour les sorties : on a, par exemple, un panneau d un certainnombre de lignes de 32 interrupteurs ; on entre les donn ees par mots de 32 bits ; on convertit,`a la main, le mot en binaire et on manipule les interrupteurspour l entrer (disons avec lamanette vers le haut pour 1 et vers le bas pour 0). Une petite sonnette avertit que l on peutr ecup erer les r esultats : ils sont affich es, egalement en binaire, mot par mot (par exempleavec lampe allum ee pour 1 et eteinte pour 0, en esp erant qu aucune lampe n est grill ee).
3 Cette interface homme machine appara t si fantasmagorique pour le grand public qu unfilm de James Bond la montre encore alors qu elle avait disparue depuis longtemps. L his-toire n etant qu un eternel recommencement, le premier micro-ordinateur, l Alta r de 1977,utilisera cette interface . Lorque IBM s int eressera aux ordinateurs, au milieu des ann ees 1950, elle am eliorera cetteinterface avec les moyens qu elle conna t bien : les entr ees se feront d esormais avec desbandes perfor eespuis descartes perfor ees; les r esultats peuvent etre sortis sur les m emessupports, remplac es tr`es vite par desimprimantes rapides. Au d ebut des ann ees 1970 apparaissent lesterminauxavec un clavier pour les entr ees etun ecranpour les r esultats, ce qui exige egalement un support pourla conservation desdonn ees (disques durs et disquettes). Il s agit d un ecran texte, g en eralement de 25 lignesde 80 genre de terminal sera utilis e pour le Minitel fran cais.
4 Au d ebut des ann ees 1980, leprojet Altodu laboratoire de recherche de Xerox `a Palo Altova conduire `a l interface graphiquetelle que nous la connaissons : ecran graphique hauted efinition, syst`eme de fen etres, utilisation d une soci et e Apple sortira les premiers ordinateurs profitant de cette interface : d abord leLisaau succ`es mitig e puis leMacintosh, en 1984, au succ`es fulgurant. Sortiront ensuitepour les compatibles PC, d abordGEMpuisWindows, et X-Window pour Unix. L histoirede l origine de l interface graphique est cont ee dans [LEV-94]. Au d ebut des ann ees 1990, les ordinateurs `a commandes vocales apparaissent mais ils nesont encore utilis es que dans des situations particuli`eres (am elioration des conditions de viedes handicap es, pilotes d avion de ). `A la fin des ann ees 1990, les PDA acceptent les commandes `a ecriture manuscrite, pr ec ed edes ecrans interface homme machine la plus utilis ee `a l heure actuelle (2010) est l interface ETUDE G EN Programmation de l interface graphiquePrise en charge de l interface L interface graphique peut etre vue de trois fa cons : l aspect utilisateurconsistant `a l utiliser, tout simplement ; l aspect programmeurconsistant `a programmer cette interface pour les programmes utili-sateur, en utilisant une biblioth`eque de fonctions ; l aspect concepteurconsistant `a cr eer cette biblioth`eque de supposons ici que le lecteur domine l aspect utilisateur depuis longtemps.
5 Nous avonsint er et `a conna tre l aspect programmeur avant d aborder l aspect concepteur, r eserv e `a une eliterestreinte. C est cet aspect programmeur que nous allons aborder de Comme nous venons de le dire, la Programmation de l interface gra-phique se fait en utilisant une biblioth`eque de fonctions le cas de Windows. On peut programmer l interface graphique en utilisant des outilsplus ou moins elabor es : Laprogrammation brutese fait en langage C en utilisant la biblioth`eque dynamiquedefonctions l auteur phare d introduction `a ce type deprogrammation, qui donne les r esultats les plus performants. La Programmation en langage orient e objet se fait en C++ avec lesMFC(pourMicro-soft Foundations Classes), qui se contentent d encapsuler les fonctions de la biblioth`equepr ec edente (et qui donne des programmes moins optimis es). Les compilateurs de Microsoft, Visual C++ (plut ot pour les personnes ayant re cu une education en Programmation ) et Visual Basic (plut ot pourles n eophytes en programma-tion), poss`edent des outils de mise en place (mais conduisent `a des programmes moinsoptimis es).
6 L inconv enient de l utilisation de ces derniers compilateurs se rencontre lors des projets : sicertains programment une partie en Visual C++ et d autres enVisual Basic, cette fa conde faire conduit `a un blocage. Microsoft a introduit latechnologie .NETpour pallier, entreautre, `a cet inconv enient : la compilation en C# (lire si sharp en anglais et ces di`eze en fran cais) ou en Visual Basic .NET conduit, non pas `a un programme objet, mais `a unprogramme en un code interm ediaire qui est le m eme quel quesoit le compilateur choisi ;on peut donc regrouper des morceaux de programmes d un m le cas de X-Window, nous avons egalement plusieurs niveaux d outillages de program-mation : La Programmation brute se fait en langage C avec la biblioth`eque Xlib, quelquefois appel eele langage d assemblage du graphisme. La Programmation avec une bo te `a outils plus elabor eese fait egalement en langage C avecla biblioth`equeXt Intrinsics(pourX-window Toolkitavec fonctions intrins`eques).
7 La Programmation avec Motif permet d utiliser un certain nombre dewidgets(pourWIn-dowing gaDGET). Cette biblioth`eque est commercialis ee mais une version libre existe (denomlesstif).Nous ne dirons rien de MacOS pour lequel on a des outils de Programmation D evelopper un programme en tenant compte de l interfacegraphique pour cha-cune des plate-formes est un projet lourd. Pour le tester on aint er et `a utiliser unprototype,conduisant `a un utilitaire eventuellement moins performant sur une plate-forme donn ee maispermettant de tester le programme sur toutes les plates-formes `a la 5. Programmation DE L interface graphique EN JAVAC est l`a que r eside tout l int er et de Java : on programmeune seule fois l interface graphiquepour toutes les plates-formes. De plus on apprend les concepts de la Programmation de l interfacegraphique : en effet la fa con de programmer avec la biblioth`eque ad equate pour une plate-formeest tr`es proche de celle pour une une autre, puisque toutes h eritent du projet Alto.
8 L inconv enientest que le programme objet est lent (principalement parcequ il est interpr et e et non compil e),mais on peut le voir comme une premi`ere etape avant le programme brut pour la plate-formevoulue. N oublions pas egalement que Java est r eellementutilis e sur Internet et donc que laprogrammation Java poss`ede un int er et intrins` Le cas de JavaIl existe deux paquetages de Programmation de l interface graphique pour Java : Les concepteurs de Java avaient con cu, d`es le kit JDK ,une bo te `a outils d enomm eesAbstract Windowing Toolkit(c est-`a-direbo te `a outils de fen etrage abstrait, les fen etresapparaissant comme la primitive principale, abstrait puisqu il s agit d une surcouche), setrouvant dans le , s appuyant tr`es fortement sur les bo tes `a outils desinterfaces des plates-formes sur lesquelles les programmes sont ex ecut es en d efinitive. Lecompilateur donne le m eme code interm ediaire quelle sue soit le plate-forme ; l interpr eteurtraduit en code du syst`eme graphique de la plate-forme.
9 Puisqueawtutilise la bo te `a outils de la plate-forme sur laquelle onex ecute le programme,l aspect peut etre assez diff erent d une plate-forme `a l autre (y compris, par exemple, pourla c esure d une ligne). Les concepteurs de Java ont donc con cu un autre paquetage, appel eswing, moins d ependant de la plate-forme : on utilise une fen etre totalement blanche dela plate-forme sur laquelle on se trouve, sur laquelle on peint enti`erement l aspect que l ond esire. Ajout e pour le kit JDK , les kits depuis JDK comprennent le deux biblioth`eques font d esormais parti desJFC(pourJava Foundation Classes). GRAPHISME DE Graphisme de baseNous appelleronsgraphisme de basela mise en place d interfaces graphiques ne faisant pasintervenira priorila gestion des ev enements (clic de ). Il s agit essentiellement de la miseen place d une fen etre et de son remplissage nous l avons vu lors de notre etude de l utilisation d une interface graphique , celle-ciest une collection defen etres, ou plus exactement une hi erarchie de fen etres.
10 L ecranlui-m emeest une fen etre qui est m`ere de toutes les autres. On ne peutpas acc eder `a la fen etre de basequ est l ecran en Java ; on doit n ecessairement d efinir une fen etre fille de l ecran, appel eecadre(car cette fen etre a un encadrement). Les D efinitionOn appellecadre(en anglaisframe) une fen etre qui n est pas contenue dans une autre fen etre(autre que la fen etre m`ere qu est l ecran en son entier).Traditionnelement une telle fen etre est repr esent ee avec desbordset unbandeau de est la fen etre de base pour l utilisateur, mais elle est d ej`a complexe pour le concepteur del interface , car en fait constitu ee de plusieurs fen etres pour les bords et pour le Mise en placeCommen cons par un exemple que nous expliquerons Ecrivons une application Java faisant appara tre un *;class PremierCadre extends Frame{public PremierCadre(){setTitle("Premier cadre");setSize(300, 200);}}public class Cadre{public static void main(String args[]){Frame frame;frame = new PremierCadre(); ();}}Ex Lorsqu on fait ex ecuter ce programme, on voit appara tre (au bout d un certaintemps) une fen etre positionn ee en haut `a gauche.