Professional Documents
Culture Documents
Vincent Morice
2/59
2013 - 2014
Introduction Java
La programmation objet Classes et instances Composition, hritage, polymorphisme Contrle daccs aux membres des objets Java et linternet Lorigine de Java Programmation ct client : les applets Java ct serveur Installation de Java Installation partir du site de Sun Microsystems Chemins daccs et commandes Documentation sur les classes prdfinies
Chapitre 2 :
2.1 2.2 2.2.1 2.2.2 2.3 2.4 2.4.1 2.4.2 2.4.3 2.5 2.6
Un objet se manipule par un pointeur Cration dun objet Mthode gnrale Les types lmentaires Destruction dun objet Cration dune classe Structure gnrale Les membres champs de donnes Les membres mthodes Un programme lmentaire Transformation en applet
Chapitre 3 :
3.1 3.2 3.3 3.4 3.5 3.5.1 3.5.2
Laffectation Oprateurs et fonctions mathmatiques Oprateurs de comparaison et expressions logiques Loprateur + pour les chanes de caractres Instructions conditionnelles Linstruction if Linstruction switch
2013 - 2014
3/59
Chapitre 4 :
4.1 4.1.1 4.1.2 4.2 4.3 4.4
33 33 34 34 35 35 37 37 38 41 41 41 42 43 45 45 45 45 47 49 49 50 53 53 53 55 56 56
Les packages Accs un package Cration dun package Lhritage Les interfaces Les classes internes
Chapitre 5 :
5.1 5.2
Chapitre 6 :
6.1 6.2 6.3 6.4
Chapitre 7 :
7.1 7.2 7.2.1 7.2.2 7.3 7.3.1 7.3.2
Les entres-sorties
Principe gnral Streams pour donnes binaires Streams dentre Streams de sortie Streams pour donnes textuelles Streams dentre Streams de sortie
Chapitre 8 :
8.1 8.2 8.3 8.4 8.4.1
Applets et fentres
Les applets Les composants graphiques Afficher des lments graphiques Les vnements Le modle
4/59
2013 - 2014
8.4.2
2013 - 2014
5/59
6/59
2013 - 2014
Introduction Java
2013 - 2014
7/59
Introduction Java
tiques (sauf celles dclares prives), aux prcisions ou modifications prs quon jugera utile de lui apporter. Une classe fille peut se diffrencier de sa parente par ajout de nouveaux membres (on dit quelle tend (extends) sa parente) ; ou par remplacement de certains membres, en particulier de mthodes. Lorsquune classe fille redfinit une mthode de sa parente, Java sait choisir la mthode la plus adapte excuter selon le contexte. Si la mthode est utilise sur un objet instance de la classe fille, cest la mthode la plus spcifique qui est excute. Sinon, cest la mthode la plus gnrale. Cette facult dadaptation est appele polymorphisme. Elle requiert un binding dynamique entre le nom dune fonction appele et la fonction elle-mme. Java nautorise pas lhritage multiple, cest dire la possibilit pour une classe dhriter de plusieurs parents (qui ne sont pas eux-mmes dj parents les uns des autres). Mais toute classe possde une classe parente : les classes forment une arborescence. La racine de larbre, anctre de toutes les classes, est la seule exception. Cette classe racine sappelle Object. Dire quune classe hrite dune autre, cest les relier par une relation de type est-un ou is-a . Introduire un objet par composition comme champ dun autre objet, cest relier ces objets par une relation dappartenance a-un ou has-a . Le plus souvent, on ne choisira lhritage que si cette relation simpose de manire vidente. Ds quil y a doute, on utilisera la composition.
Accs
Dans classe courante Dans package courant Par hritage, autre package Partout
Oui
Les packages Les dfinitions des classes sont enregistres dans des fichiers formant une ou des librairies.
8/59
2013 - 2014
Introduction Java
On appelle package un ensemble de dfinitions de classes regroupes parce quelles traitent dun mme problme.
2013 - 2014
9/59
Introduction Java
ct serveur. Les programmes Java excutables par le serveur sont appels des servlets. Il faut y ajouter les JSP (Java Serveur Pages)1, pages HTML contenant du code Java excutable sur le serveur.
1. Ne pas confondre avec les ASP (Active Server Pages) dont lobjectif est analogue. Les ASP ne fonctionnent que sur Windows, mais permettrent dintgrer divers langages de scripts dans les pages HTML, en particulier JavaScript.
10/59
2013 - 2014
Introduction Java
Dans dautres versions de windows, la mise jour des variables denvironnement est ralise partir du panneau de configuration, proprits avances du systme. En ce qui concerne les classes, Java sait retrouver les classes prdfinies. Pour les classes dfinies par lutilisateur, il utilise la variable classpath contenant des chemins daccs des classes. Cette variable est elle aussi dfinie dans autoexec.bat. A moins que cette variable ne soit pas dfinie, il ny a pas de recherche faite systmatiquement dans le rpertoire courant. On doit donc ajouter un point, qui reprsente le rpertoire courant, en tte de la dfinition de la variable, selon le modle :
SET CLASSPATH=.;C:\VisualCafe\BIN\COMPONENTS\SYMBEANS.JAR
La compilation et lexcution se font partir dune fentre MS-DOS. On peut installer sur le bureau un raccourci vers le fichier cmd.exe contenu dans le rpertoire windows\system32. En changeant les proprits de ce raccourci, on peut prciser un rpertoire de travail sur lequel la fentre MS-DOS doit souvrir. La compilation dun fichier source (.java) en byte code est demande par javac programme .java o programme est le nom donn au programme compiler. Le rsultat est un ou plusieurs fichiers dextension .class. Lexcution dun fichier .class est obtenue par java programme . Lextension .class ne doit pas tre indique dans cette commande.
2013 - 2014
11/59
Introduction Java
Figure 2 Spcifications des API : page initiale La figure 2 montre la premire page des spcifications des API. Cette page comporte trois parties. En haut gauche, on choisit de sintresser toutes les classes, ou seulement un package particulier. En bas gauche se trouve la liste active de toutes les classes disponibles, ou de celles du package slectionn. La partie droite donne les informations dtailles. En haut se trouve un menu, avec en particulier : Use qui retrouve les packages, classes, champs, mthodes qui utilisent une classe donne. Tree qui indique la hirarchie des classes, globale ou pour le package courant. Index qui permet de trouver des informations sur tout nom de champ, mthode, classe ou package.
12/59
2013 - 2014
Introduction Java
Figure 3 La classe System ; gnralits La figure 3 montre le dbut des informations concernant la classe System. Au dessus du nom de la classe est donn le nom de son package de rattachement, ici java.lang. Le nom complet de la classe System est en ralit java.lang.System. Cette figure indique que java.lang.System dpend par hritage de java.lang.Object. La deuxime partie de la figure donne les principales caractristiques et utilisations de la classe.
2013 - 2014
13/59
Introduction Java
Figure 4 La classe System ; dtails La figure 4 montre la suite des informations accessibles : liste des champs de donnes et des mthodes, leur description dtaille se trouvant encore plus bas dans la page.
14/59
2013 - 2014
Il faut donner un nom au handle (ici chaine), et prciser vers quel type dobjet il est cens pointer. Le type est un nom de classe dj dfini, ici String, ce qui correspond aux chanes de caractres. Comme pour toute instruction de Java, on termine par un point-virgule.
de la classe pour laquelle on veut crer une instance, puis, entre parenthses, le ou les arguments ncessaires la cration, ici une chane de caractres recon15/59
2013 - 2014
naissable par les guillemets qui lentourent. La procdure new fait appel au constructeur de lobjet, pseudo-mthode de mme nom que la classe (ici String ). Elle retourne un pointeur vers lobjet cr quon mmorise dans un handle.
1 caractre uni- le caractre nul code nombre entier nombre entier nombre rel nombre rel 0 0L 0.0f 0.0d ou 0.0
Lorsquun caractre doit tre directement crit dans un programme, il faut lentourer dapostrophes (x pour reprsenter le caractre x). Une chane de caractres est un vritable objet qui peut contenir plusieurs caractres et quon crit entre guillemets : "coucou". Il existe des codes permettant dutiliser des caractres spciaux, soit seuls, soit dans une chane de caractres. Tableau 3 Codage de certains caractres code \b \f \n \r signification retour arrire dun caractre (backspace) saut de page (form feed) passage la ligne (next line) retour dbut de ligne (carriage return)
16/59
2013 - 2014
signification tabulation horizontale le caractre \ (backslash ou antislash) lapostrophe le guillemet caractreASCII de code octal ooo (un 0 en tte est optionnel) caractre Unicode de code hexadcimal xxxx
Cette instruction cre la variable carac, pouvant contenir un caractre, et lui donne la valeur x.
3.
2013 - 2014
17/59
Ces lignes dfinissent une classe nomme NvCl. La dfinition dbute par le mot rserv class, puis est suivie du nom choisi pour la classe. Le mot class doit tre prcd de public pour que la classe soit accessible partout ; dans le cas contraire, elle nest accessible que dans le package courant. La dfinition proprement dite de la classe est mise entre accolades, dans un bloc. Toute mthode dfinie dans le bloc est accessible partout dans ce bloc. Tout champ de donnes est accessible aprs sa cration. Dans lexemple la classe ne contient quun commentaire dont le dbut est marqu par /* et la fin par */. Aprs cette dfinition, on peut crer des instances selon la mthode habituelle :
NvCl nobj = new NvCl();
dune formule faisant intervenir un champ dj dfini. Dans toute la classe, les champs sont directement accessibles par leurs noms. Si on a cr un objet nobj par NvCl nobj = new NvCl();, on peut accder depuis lextrieur au contenu de chaque champ dans cet objet en faisant suivre son nom nobj dun point et du nom du champ. On peut crire :
nobj.i = 50; nobj.f = (float)(nobj.j-10); nobj.s = new String("Hello");
Rappelons que ce type daccs peut tre interdit par la dclaration des champs (voir section 1.1.3
18/59
2013 - 2014
page 8). Champ static Laccs externe un champ de donnes passe normalement par un objet instance de la classe. Il est cependant possible de dclarer un champ comme static, en faisant prcder sa dclaration du mot static, ce qui interdit la recopie du champ dans les instances. Laccs un tel champ est obtenu en faisant prcder son nom de celui de la classe et dun point. Ce nest cependant pas une erreur dutiliser un nom dinstance la place du nom de la classe. Champ final Un champ est final si on ne peut lui donner de valeur quune seule fois. On utilise gnralement cette possibilit pour dfinir des constantes. Exemple :
final static float valeurPi = 3.14f;
Cet exemple de classe contient deux mthodes nommes ajouter et nbOctetsChaine. Le nom de chaque mthode est prcd du type du rsultat : ici toutes deux retournent un nombre entier int. Ce type est un nom de classe si le rsultat est un objet, ou le mot void si la mthode ne retourne pas de rsultat. Le nom de chaque mthode est suivi, entre parenthses, de la liste des arguments. Plusieurs arguments sont spars par des virgules. Si une mthode ne possde pas dargument, les parenthses restent obligatoires. Un argument dfinit une variable locale la mthode : on lui donne un nom, et son type. Largument b de la premire mthode, et largument s de la seconde, nont aucun rapport avec les champs b et s de la classe. Si on veut pourtant rfrencer le champ masqu, on utilisera lcriture this.b ou this.s, le mot this reprsentant lobjet courant. Lorsquon utilise la mthode, il faut prciser les valeurs des arguments. Pour un argument de type lmentaire, la valeur donne est recopie dans la variable locale : la modification de 19/59
2013 - 2014
cette valeur dans la mthode ne modifie pas la valeur externe. Si un argument correspond un objet, la valeur recopie dans la variable locale est un handle vers lobjet : lobjet lui-mme nest pas recopi, et une modification dans la mthode se voit lextrieur. Vient ensuite le corps de la mthode crit entre accolades, ensemble des instructions qui dfinissent le travail que la mthode doit raliser. Parmi ces instructions, on trouve linstruction return qui arrte lexcution de la mthode et retourne la partie du programme qui la appele. Sauf pour une mthode de type void, linstruction return dfinit aussi la valeur que la mthode doit retourner. Dans la premire mthode, la valeur retourne est la somme des deux arguments. Dans la seconde, il sagit du nombre doctets occups par la chane de caractres passe en argument, double du nombre de caractres de cette chane.
La dclaration dune mthode doit en outre prciser les droits dutilisation. On devra par exemple faire prcder sa dclaration du mot public pour quelle soit utilisable partout (se reporter la section 1.1.3 page 8).
Noter la transformation du rsultat entier de la mthode ajouter en flottant par le casting (float). En ralit, Java effectue automatiquement (casting implicite) tout casting qui augmente la prcision du codage (par exemple float en double), ou lors dune conversion dentier vers flottant, ou encore pour transformer un objet en un objet parent. Dans les autres cas le casting doit tre explicite.
2013 - 2014
Il est possible dappeler un constructeur depuis un autre, par exemple pour viter de rcrire plusieurs fois les mmes instructions. Mais il faut une syntaxe particulire utilisant du mot this suivi de parenthses pour les ventuels arguments. Les parenthses vitent la confusion avec le mot this utilis pour rfrencer lobjet courant. Pour que le constructeur 2 arguments appelle celui un seul argument, on crira
NvCl (int a, String s) { this (a); this.s = s; }
Une contrainte importante doit tre respecte. Lappel un autre constructeur via le mot this doit tre ralis dans la premire instruction du constructeur. Cette contrainte est lie aux problmes dhritage : si la premire instruction dun constructeur nest ni lappel un autre constructeur de la classe par this, ni lappel un constructeur de la classe parente ( laide du mot super), Java appelle automatiquement le constructeur de la classe parente sans argument.
2013 - 2014
21/59
Ce programme dbute par un commentaire : un double slash (//) met en commentaire tout ce qui le suit, jusqu la fin de la ligne. On peut aussi faire un commentaire sur plusieurs lignes laide du double caractre /* pour dbuter le commentaire et de */ pour en marquer la fin. Le programme contient deux dclarations de classes. La seconde, Nvcls, est celle que nous avons dj introduite, quelques variations prs. La premire classe a pour nom Test et est dclare public. Le programme doit tre enregistr dans
22/59
2013 - 2014
un fichier nomm Test.java. Le nom de la classe public est le mme que le nom du fichier ( lextension .java prs). Cette contrainte impose aussi quil y ait au plus une seule classe public dans un fichier. Cette classe Test possde uniquement une mthode main. Ce nom est prdfini dans Java. Lors de la compilation du fichier Test.java, on obtient deux fichiers Test.class et Nvcls.class. La commande java Test qui lance le programme demande en ralit dexcuter la mthode main de la classe Test. La mthode main est dclare public (accessible de partout) et static (elle ne doit pas tre recopie sur les ventuelles instances de la classe Test). Son argument String[] argv est un tableau de chaines de caractres nomm argv. Ce nom peut tre chang, mais il est conventionnel. Dans ce tableau sont ranges les ventuelles informations complmentaires tapes la suite de la ligne de commande java Test.
t remplace par init, sans argument, mthode automatiquement dclenche lors du lancement de lapplet.
2013 - 2014
23/59
Un objet applet est un objet graphique particulier, un conteneur . La mthode add permet dajouter pour affichage des objets particuliers (ici un Label) aux conteneurs. La mthode aff de la classe Nvcls possde maintenant en argument le conteneur sur lequel crire des informations. Le lancement dun applet depuis une page HTML est dfini par la balise <applet> dont les trois principaux attributs sont code qui permet dindiquer le nom de lapplet, height et width qui dfinissent en pixels la hauteur et la largeur de la zone graphique (le conteneur) de lapplet. Ces dimensions peuvent tre dun pixel si lapplet na pas daffichage faire, mais le conteneur ne peut tre supprim. On crira par exemple :
<applet code="TestApplet.class" width=200 height=250></applet>
Il est possible de passer des arguments lapplet laide de la balise <param>. Lors de la mise au point dun applet, il est difficile de faire les tests sur un navigateur. En effet, pour quil prenne en compte des modifications, il est ncessaire de larrter et de le relancer. Il est prfrable dutiliser loutil appletviewer, avec une commande du type
appletviewer essai.html
Plutt que dcrire une vritable page HTML, on peut aussi mettre en tte du fichier java un commentaire contenant la balise <applet> et les ventuels <param>, comme dans lexemple prcdent. Loutil appletviewer sait lire ces commentaires pour crer le conteneur, condition dutiliser une commande du type
appletviewer TestApplet.java
24/59
2013 - 2014
Son rle est de mmoriser dans la variable x, situe gauche du signe =, la valeur dtermine par lexpression y situe droite du signe =. La variable en partie gauche est, soit dclare avant, soit directement dans linstruction en la faisant prcder de son type. La partie droite peut tre une valeur littrale (nombre ou caractre), un nom de variable , ou une expression faisant intervenir des valeurs littrales, des variables, des oprateurs, des parenthses, et des mthodes. La valeur obtenue par lvaluation de la partie droite doit tre du type de la variable en partie gauche. Dans le cas contraire, il faut raliser un transtypage, ou casting. Cette opration est ralise automatiquement lorsquelle ne peut conduire une perte dinformation (sur-casting) ; elle doit tre explicite dans le cas contraire (sous-casting). Le casting sobtient en faisant prcder lexpression du type obtenir ; le type doit tre mis entre parenthses ; sil y a doute, lexpression doit aussi tre entre parenthses pour que le casting porte sur son intgralit.
2013 - 2014
25/59
forme abrge
x += y; x -= y; x *= y; x /= y; x %= y; x++; ++x; x--; --x;
signification
x = x + y; x = x - y; x = x * y; x = x / y; x = x % y; x = x +1; x = x +1; x = x - 1; x = x - 1;
La diffrence entre x++ et ++x (ou entre x-- et --x) na dintrt que si on utilise ces formes abrges dans une expression plus gnrale. Lorsque le double signe ++ (ou --) se trouve avant la variable, lincrment (ou le dcrment) doit tre fait en priorit, et cest la nouvelle valeur qui est utilise dans le reste du calcul. Si le double signe se trouve aprs la variable, la valeur initiale de la variable est utilise dans le calcul, puis, la variable est incrmente (ou dcrmente). Les fonctions mathmatiques les plus utiles sont des mthodes de la classe Math, dfinie dans le package java.lang. Ce package tant charg avec tout programme, cette classe et les mthodes correspondantes sont accessibles sans opration particulire :
nom
Math.abs(x) Math.sin(x) Math.cos(x) Math.tan(x) Math.log(x)
signification valeur absolue de largument sinus de largument en radians cosinus de largument en radians tangeante de largument en radians logarithme nprien de largument (positif)
commentaire conserve le type de largument rsultat de type double rsultat de type double rsultat de type double rsultat de type double
26/59
2013 - 2014
nom
Math.exp(x) Math.pow(x, y) Math.sqrt(x) Math.round(x) Math.min(x, y) Math.max(x, y) Math.random()
commentaire rsultat de type double rsultat de type double rsultat de type double rsultat long si x est double, et int si x est float rsultat entier si les arguments le sont rsultat entier si les arguments le sont rsultat double
lev la puissance y
racine carre de largument (positif ou nul) entier arrondi valeur minimum des deux arguments valeur maximum des deux arguments nombre pseudo-alatoire entre 0 et 1
criture
x == y x != y x>y x >= y x<y x <= y x instanceof y
signification les contenus de x et y sont-ils identiques ? les contenus de x et y sont-ils diffrents ? le contenu de x est-il plus grand que celui de y ? le contenu de x est-il suprieur ou gal celui de y ? le contenu de x est-il plus petit que celui de y ? le contenu de x est-il infrieur ou gal celui de y ? lobjet x est-il une instance de la classe y ?
2013 - 2014
27/59
Remarquons que x == y est true si x et y ont la mme valeur. Lorsque x et y sont des handles , ils sont gaux sils dsignent le mme objet, mais pas sils dsignent deux objets distincts, mme lorsque ces objets ont le mme contenu. Tout objet dispose dune mthode equals permettant de comprer les contenus. On crit s1.equals(s2) pour comparer s2 avec s1. Pour la plupart des classes prdfinies dans Java, la mthode equals compare effectivement les contenus des objets. Pour les classes dfinies dans un programme, il faut redfinir cette mthode pour ladapter ; par dfaut, elle ne compare que les handles. Des expressions logiques peuvent tre combines laide doprateurs logiques :
expression
x && y x || y !x
signification et logique : true ssi x true et y true ; false ds que x ou y false ou logique : true ds que x ou y true ; false ssi x false et y false non logique : true si x false ; false sinon
Les oprateurs logiques sont valus de gauche droite, mais en respectant certaines priorits. Le non est prioritaire sur le et , qui lest sur le ou . Il est possible dutiliser des parenthses pour forcer un ordre dvaluation particulier. Ds quun composant dun et logique svalue false, Java retourne la valeur false pour le et logique , sans valuer le ou les composants restants. De mme, ds quun composant dun ou logique svalue true, Java retourne la valeur true pour le ou logique , sans valuer le ou les composants restants.
28/59
2013 - 2014
Forme complte :
if (condition ) instruction ; else instruction ;
Si on doit crire plusieurs sous- instructions excuter au lieu dune seule autorise, il faut les mettre dans un bloc dfini par une accolade ouvrante { et une accolade fermante }.
Lexpression entre parenthses qui suit le mot switch est value par Java. Son rsultat doit tre une
2013 - 2014
29/59
valeur entire, ou un caractre. Si ce rsultat est retrouv parmi les valeurs suivant les mots case, les instructions correspondantes sont excutes. Le break; qui suit force quitter linstruction switch ; en son absence, les instructions du case suivant sont elles aussi excutes. Si le rsultat nest pas retrouv parmi celles prvues, ce sont les instructions suivant default: qui sont excutes. La partie default: est optionnelle. A titre dexemple, voici une partie de programme consistant ajouter, soustraire, multiplier ou diviser le contenu dune variable resultat par un nombre contenu dans une variable nbcour, puis ranger la valeur obtenue dans resultat. Lopration faire est dfinie par un caractre contenu dans la variable opr.
switch (opr) { case +: resultat += nbcour; break; case -: resultat -= nbcour; break; case *: resultat *= nbcour; break; case /: if (nbcour == 0) { System.out.println("Erreur : division par zro. Opration ignore"); } else { resultat /= nbcour; } break; default: System.out.println("Erreur : oprateur " + opr + " inconnu"); }
30/59
2013 - 2014
Le corps de la boucle est linstruction rpter. Si le corps doit contenir plusieurs oprations, il faut regrouper la srie dinstructions correspondantes en un bloc laide des accolades. Le test de fin de boucle est fait avant lexcution du corps. Si la condition est fausse lors de sa premire valuation, le corps ne sera donc jamais excut. La boucle peut tre interrompue prmaturment laide de linstruction break. Linstruction continue permet dinterrompre litration en cours et de passer litration suivante.
Exemple :
import java.io.*; class ExempWhile { public static void main(String[] argv) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a, b = 0; while (a <= 0) { System.out.print("Entrez le premier entier positif : "); a = (new Integer(br.readLine())).intValue(); } while (true) { System.out.print("Entrez le second entier positif : "); b = (new Integer(br.readLine())).intValue(); if (b > 0) break; } System.out.println("Valeurs : a = " + a + " b = " + b); } }
Ces deux boucles permettent dentrer au clavier la valeur de deux entiers et de contrler que ces valeurs sont strictement positives, mais avec des tests de fin de boucle diffrents. Les instructions permettant la lecture de nombres au clavier sont dtailles dans le chapitre 7 page 45. Si plusieurs boucles sont imbriques, les instructions continue et break ne concernent que la boucle la plus interne dans laquelle elles sont crites. Cependant on peut donner une tiquette (nom suivi dun deux-points) une boucle. On crira par exemple boucle1: while (a <= 0) {..... Dans les boucles internes la boucle ainsi marque, on peut maintenant utiliser les instructions continue boucle1; et break boucle1;. La premire demande passer immdiatement litration suivante de la boucle marque boucle1. La seconde demande quitter immdiatement la boucle marque.
2013 - 2014
31/59
La diffrence avec while est que le test de fin de boucle est fait aprs lexcution du corps de la boucle, donc que les instructions sont donc toujours excutes au moins une fois. Exemple :
import java.io.*; class ExempDoWhile { public static void main(String[] argv) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a; do { System.out.print("Entrez un nombre entre 0 et 9 : "); a = (new Integer(br.readLine())).intValue(); } while ((a < 0) || (a > 9)); System.out.println("Valeur : a = " + a); } }
Cette boucle demande lentre au clavier dun nombre entier compris entre 0 et 9. Elle sarrte ds que le nombre fourni vrifie cette condition.
Linstruction_initiale est excute une et une seule fois, lors de lentre dans la boucle. Elle sert gnralement initialiser un compteur. La condition est ensuite teste. Si elle est fausse, on quitte le corps de la boucle pour passer la suite du programme ; le corps de la boucle peut donc ntre jamais excut. Si elle est vraie, linstruction formant le corps de la boucle est excute. Linstruction_d_itration est excute son tour. Puis la condition est teste nouveau et le cycle recommence. Ce schma dexcution est quivalent celui obtenu par :
instruction_initiale ; while (condition ) { instruction ; instruction_d_itration ; }
32/59
2013 - 2014
Linstruction import ne demande pas le chargement des classes dun package, mais sert uniquement simplifier les modalits daccs ces classes. Deux packages sont directement accessibles, sans ncessiter dinstruction import : java.lang qui contient des classes dusage trs frquent : Object, objets correspondants aux types lmentaires comme Integer ou Character, Math, String, ou System. Le package par dfaut o sont ranges les classes non attaches explicitement un package.
2013 - 2014
33/59
Cette instruction doit tre la premire du ou de chaque fichier contenant les classes rattacher au package. Elle concerne toutes les classes de ce ou ces fichiers. Java introduit aussi la notion de sous-package : dans le package java.awt, awt est un sous-package du package plus gnral java. Le nom complet doit comporter lensemble des packages dont il dpend, en commenant par le plus gnral, et en sparant chacun par un point. Les packages sont traduits par des rpertoires sur le disque local. Ainsi au package java.awt est associ un rpertoire java contenant un sous-rpertoire awt. En ralit, pour les classes prdfinies, ces rpertoires se trouvent dans le fichier archive rt.jar du rpertoire jre\lib (voir section 1.3.1 page 10). Pour les packages dfinis par lutilisateur, les sous-rpertoires doivent tre crs dans des rpertoires dtermins par la variable denvironnement classpath (voir section 1.3.2 page 11). Il faut veiller ce que les fichiers compils (.class) soient rangs dans les rpertoires voulus.
4.2 Lhritage
Pour indiquer quune classe hrite dune autre, on complte sa premire ligne de dclaration du mot extends suivi du nom de la classe parente, selon le modle
class Cercle extends Courbe {....
La classe fille a accs aux champs de donnes et aux mthodes de la classe parente comme sils taient dfinis directement, moins dune restriction impose dans la classe parente (membres private par exemple). Cependant, la classe fille peut redfinir tout ou partie des membres de sa parente. Le polymorphisme garantit laccs au membre de lobjet le plus spcifique. Une classe ne peut avoir quun seul parent (pas dhritage multiple), et toute classe en possde un : lorsquon ne dclare pas explicitement de relation dhritage, la classe parente est Object. Seule Object ne possde pas de parent. Si, dans un objet, on veut rfrencer lobjet parent, on peut utiliser le mot super, de mme que le mot this permet de rfrencer lobjet courant. Lorsquon instancie une classe, son constructeur est appel. Mais avant lui sont dclenchs les constructeurs sans argument de toutes les classes parentes, en commenant par la plus leve, Object. Il est possible dagir sur ces appels : on force lappel un constructeur de la classe parente avec arguments si la premire instruction du constructeur de la classe fille est le mot super suivi entre parenthses du ou des arguments transmettre ; on force lappel un autre constructeur de la mme classe si la premire instruction du constructeur de la classe fille est le mot this suivi entre parenthses du ou des arguments transmettre (voir section 2.4.3.4 page 21).
34/59
2013 - 2014
2013 - 2014
35/59
Relations entre classes : packages, hritage, classes internes String retrouverNom () {return nom;} } public Destination dest(String s) {return new Destination(s);} public static void main(String[] argv) { Melange m = new Melange(); Melange.Destination d1 = m.new Destination("Venise"); Melange.Destination d2 = m.dest("Rome"); } }
La dclaration dune classe interne noffre aucune difficult. Le type correspondant scrit avec le nom de la classe externe, un point, et le nom de la classe interne (Melange.Destination dans lexemple). La cration dune instance de la classe interne se fait via un objet instance de la classe englobante, via linstance m de Melange dans lexemple : au lieu dutiliser new, on crit le nom de linstance externe, un point, et new (ici m.new). Une autre possibilit consiste utiliser une mthode (ici dest) en prcisant le nom de linstance externe lors de lappel (m.dest). On peut rfrencer lobjet externe de rattachement depuis lobjet interne en crivant le nom de la classe externe, suivi dun point, et du mot this, soit, dans lexemple, Melange.this (qui rfrence le mme objet que le handle m). Le fichier contenant lexemple prcdent devrait sappeler Melange.java. Lors de sa compilation, sera cr un fichier Melange.class, mais aussi un fichier Melange$Destination.class contenant la dfinition de la classe interne. Une classe interne peut tre dclare static. Ses instances restent alors attaches la classe externe, et il nest plus ncessaire de crer des instances de la classe externe pour instancier la classe interne. Dans lexemple, au lieu dutiliser le handle m vers un objet englobant, on utilisera directement le nom de la classe Melange.
36/59
2013 - 2014
La cration dun tableau de 5 lments vides (en fait de valeur 0) est de la forme :
tab = new int[5];
Une initialisation du tableau peut tre effectue directement lors de sa cration, selon le modle :
int[] tab = {1, 2, 3, 4, 5};
Les valeurs des lments peuvent tre remplaces par des expressions. Laccs un lment du tableau se fait en donnant le nom du tableau, suivi entre crochets de lindice de llment dans le tableau. En Java, les lments sont indics partir de 0. tab[2] = 10; donne donc la valeur 10 au troisime lment du tableau. Lutilisation dun tableau va gnralement de pair avec celle de boucles for :
int[] tab = new int[5]; int i; for (i = 0; i < tab.length; i++) { tab[i] = 2*i+3; } Le champ length contient la
taille du tableau.
2013 - 2014
37/59
Tableaux et chanes de caractres int[][] tab2 = new int[3][]; dfinit un tableau dentiers deux dimensions
: la premire a 3 lments (3 lignes), et la taille de la seconde (nombre de colonnes) nest pas prcise. Il sagit en fait de 3 tableaux unidimensionnels tab2[0], tab2[1] et tab2[2] dont les tailles peuvent tre choisies diffrentes. Laccs un lment se fait en prcisant deux indices : tab2[1][0] rfrence la premire colonne de la deuxime ligne.
38/59
2013 - 2014
le second argument pour extraire la fin de la chane. toLowerCase() et toUpperCase() mettent les caractres dune chane en minuscules ou en majuscules. trim() limine les espaces ventuels en dbut et en fin de chane.
2013 - 2014
39/59
40/59
2013 - 2014
2013 - 2014
41/59
La classe Exception est dfinie dans le package java.lang. Elle possde de nombreuses sousclasses, dont RuntimeException, elle aussi dfinie dans java.lang. Le comportement normal de Java est de forcer le programmeur traiter chacune des exceptions que son programme peut produire. Sil veut reporter ce traitement des mthodes appelantes, ou linterprteur, il doit lindiquer explicitement. Cette obligation est leve pour RuntimeException et ses sous-classes. Parmi ces sous classes, on trouve ArithmeticException, cre en cas de problme de calcul ; ArrayStoreException, cre si on tente de mettre dans un tableau un objet de type inadapt ; ClassCastException, cre si on veut faire un casting impossible ; NegativeArraySizeException, cre si on tente de crer un tableau de dimension ngative ; NullPointerException, cre si on utilise un handle null pour accder un objet. Toutes ces sous-classes sont dans java.lang.
6.3 Syntaxe
import java.io.*; class Err3 { public static void main(String[] argv) { int x, y, z=0; try { x = demander("Numrateur : "); y = demander("Dnominateur : "); z = calcul(x, y); } catch (ArithmeticException e) { System.out.println("Erreur : division par zro"); throw e; } catch (IOException e) { System.out.println("Erreur de lecture"); System.exit(0); } System.out.println("Rsultat = " + z); } static int calcul(int a, int b) { return a/b; } static int demander(String s) throws IOException { System.out.print(s); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); return (new Integer(br.readLine())).intValue(); } }
42/59
2013 - 2014
Les instructions susceptibles de causer des erreurs sont regroupes dans un bloc annonc par le mot try. Si une erreur se produit, lexcution est interrompue, et Java se positionne juste aprs la recherche de pseudo-mthodes catch, et, parmi elles, de celle (la premire trouve) dont largument possde le mme type que lexception gnre par lerreur, ou un type parent. En cas dchec, il quitte le bloc courant (ici la mthode main) et recommence au niveau suprieur tant que cest possible, ou passe le contrle linterprteur. Le premier type dexception trait est une ArithmeticException. Cest en ralit dans la mthode calcul que lerreur (une division par zro) peut se produire. Si cest le cas, Java doit crer lexception, quitter le bloc dfini par la mthode calcul, rejoindre le bloc try, le quitter son tour pour trouver le catch adquat. Il na pas t ncessaire dautoriser Java quitter le bloc de la mthode calcul en cas derreur, car ArithmeticException est fille de RuntimeException. Le traitement de lerreur consiste en un message, suivi de la propagation de lerreur au niveau suprieur, ici linterprteur. Cette propagation est obtenue par linstruction throw suivie de lexception propager. Cette instruction peut tre utilise avec toute exception et nimporte o. En labsence dinstruction throw, le programme aurait continu ensuite normalement. Le deuxime type dexception est une IOException obtenue en cas derreur dentre-sortie (se reporter au chapitre 7 page 45). Une erreur de lecture peut se produire dans la mthode demander. Mais, puisque IOException nest pas fille de RuntimeException, il faut donner explicitement Java le droit de quitter la mthode en cas derreur. Il faut, aprs le nom et les arguments de la mthode, ajouter le mot throws suivi du ou des types dexceptions (spars par des virgules) autoriss quitter la mthode. Le traitement consiste en un message suivi de larrt du programme obtenu par la mthode System.exit(0);
2013 - 2014
43/59
Traitement des erreurs : les exceptions } catch (NbNegatifException e) { e.printStackTrace(); throw e; } catch (ArithmeticException e) { System.out.println("Erreur : division par zro"); throw e; } System.out.println("Rsultat = " + z); } static int calcul(int a, int b) { return a/b; } static int demander(String s) throws IOException { System.out.print(s); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int i = (new Integer(br.readLine())).intValue(); if (i < 0) { throw new NbNegatifException("Valeur " + i + " ngative"); } return i; } } class NbNegatifException extends ArithmeticException { NbNegatifException (String s) { super(s); } }
Dans cet exemple, on veut que les valeurs entres soient positives ou nulles. On cre un nouveau type dexception, NbNegatifException, comme une classe fille de ArithmeticException (qui descend elle-mme de RuntimeException). Cette classe ne contient quun constructeur avec une chane de caractres en argument. Ce constructeur appelle celui de la classe parente avec cet argument. La mthode demander teste la valeur introduite au clavier. Si elle est ngative, elle dclenche lenvoi dune exception NbNegatifException laide de linstruction throw.
44/59
2013 - 2014
Les entres-sorties
2013 - 2014
45/59
Les entres-sorties
reset() remet la tte de lecture en dbut de fichier. close() ferme le stream. Le champ in de la classe System est un InputStream dj ouvert. Il sagit du stream dentre standard , permettant la lecture de donnes frappes au clavier. Les principaux streams sont : FileInputStream est le stream qui permet la lecture de fichiers squentiels binaires dont le principal constructeur a pour argument le nom complet du fichier lire sous forme dune chane de caractres (String). Ce stream est gnralement combin avec une bufferisation (BufferedInputStream). ObjectInputStream relit des objets (ou des types lmentaires) Java crits auparavant via un stream ObjectOutputStream. Les types dobjets susceptibles dtre lus et crits sont dits srialisables : ils doivent hriter de linterface Serializable. Le constructeur principal a pour argument un InputStream, en gnral un FileInputStream. Parmi les mthodes spcifiques, la plus importante est readObject() qui permet de lire un objet. Le rsultat est de type Object, et un sous-casting explicite est en gnral ncessaire. En cas de fin de fichier, on obtient une exception EOFException. FilterInputStream est la classe parente dun ensemble de classes de streams de traitement de donnes. Les constructeurs ont tous comme argument un InputStream, le stream qui fournit les donnes sur lesquelles faire le traitement. Les principales sous-classes sont : DataInputStream permet la lecture des types lmentaires partir dun InputStream par les mthodes readBoolean(), readChar(), readDouble(), readFloat(), readInt() et readLong(). BufferedInputStream permet de bufferiser la lecture, cest dire de lire tout un buffer, plutt quun byte la fois. Sauf cas particulier, on bufferise toujours les lectures. Le constructeur principal possde en argument lInputStream bufferiser. InflaterInputStream classe parente de classes permettant de lire des fichiers compresss. Contrairement aux autres streams, elle est dfinie dans le package java.util.zip. Pour le type zip (windows), on utilise la classe ZipInputStream du package java.util.zip. Pour le type gzip (unix), on utilise la classe GZIPInputStream du package java.util.zip. Pour le type jar (archives Java), on utilise la classe JarInputStream du package java.util.jar.
46/59
2013 - 2014
Les entres-sorties
2013 - 2014
47/59
Les entres-sorties String s = (String)in.readObject(); Cl2 cl = (Cl2)in.readObject(); System.out.println("Rsultat s = " + s + "\nObjet " + cl); } } class Cl1 implements Serializable { private int i; Cl1(int x) {i=x;} public String toString() {return " Cl1, i = " + i;} } class Cl2 implements Serializable { private int i; private Cl1 c1; Cl2 (int x) {i=2*x; c1= new Cl1(x);} public String toString() {return "Cl2, i = " + i + c1;} }
FilterOutputStream est la classe parente dun ensemble de classes de streams de traitement de donnes. Les constructeurs ont tous comme argument un OutputStream, le stream qui dfinit la destination des donnes traites. Les principales classes de streams sont : DataOutputStream permet lcriture de donnes de types lmentaires vers un OutputStream par les mthodes writeBoolean(boolen ), writeChar(caractre ), writeDouble(nombre double ), writeFloat(nombre float ), writeInt(nombre int ) et writeLong(nombre long ). BufferedOutputStream permet de bufferiser lcriture. PrintStream permet le formatage de donnes en binaire, en fonction du systme hte. Le constructeur a pour argument lOutputStream vers lequel envoyer les donnes. Sa mthode print(valeur ) permet dcrire sous forme de bytes les types lmentaires, les chanes de caractres et les autres objets. La mthode println(valeur ) est identique, mais ajoute un caractre fin de ligne (gnralement \n). Les champs out et err de la classe System sont des PrintStream dj ouverts. Il sagit du stream de sortie standard et du stream daffichage des erreurs , permettant lcriture de donnes ou de messages derreurs lcran. DeflaterOutputStream classe parente de classes permettant dcrire des fichiers compresss. Contrairement aux autres streams, elle est dfinie dans le package java.util.zip. Pour le type zip (windows), on utilise la classe ZipOutputStream du package java.util.zip. Pour le type gzip (unix), on utilise la classe GZIPOutputStream du package java.util.zip. Pour le type jar (archives Java), on utilise la classe JarOutputStream du package java.util.jar. 48/59
2013 - 2014
Les entres-sorties
2013 - 2014
49/59
Les entres-sorties
StringWriter utilise une chane de caractres (type String) comme destination de donnes. Le constructeur sans argument cre une chane rceptrice dont la taille est modifiable dynamiquement. La mthode toString() retourne la chane de caractres crite via le stream.
50/59
2013 - 2014
Les entres-sorties
PrintWriter permet de formater les caractres crits. Le constructeur a pour argument soit un OutputStream, soit un Writer, ce qui permet de faire les critures soit dans un fichier binaire, soit dans un fichier texte. Sa mthode print(valeur ) permet dcrire sous forme de caractres les types lmentaires, les chanes de caractres et les autres objets. La mthode println(valeur ) est identique, mais elle ajoute un caractre fin de ligne (gnralement \n). OutputStreamWriter permet de passer dun stream textuel (Writer) un stream binaire (OutputStream). Son constructeur possde en argument lOutputStream binaire. BufferedWriter permet de bufferiser lcriture. Le constructeur principal possde en argument le stream Writer, o envoyer les caractres bufferiser. Ce stream propose une mthode newLine() pour crire un saut de ligne.
2013 - 2014
51/59
Les entres-sorties
52/59
2013 - 2014
Applets et fentres
Opration Appele lors du premier chargement de lapplet. Permet de faire les premires initialisations Appele aprs init(), et lorsque la page contenant lapplet est raffiche aprs avoir t quitte Appele lorsque la page contenant lapplet est quitte Appele lorsque le navigateur est quitt
2013 - 2014
53/59
Applets et fentres
Le constructeur habituel a pour argument le libell quon veut afficher sur le bouton. Canvas classe dfinissant une zone vide rectangulaire sur laquelle lapplication peut crire, ou aller chercher de linformation. Checkbox classe permettant de dfinir des cases cocher . Une telle case est dans ltat coch (checked) ou non coch . Le constructeur possde 0, 1, 2 ou 3 paramtres. Le premier est le libell de la case. Le second est ltat initial de la case : true pour coch, et false pour non coch (par dfaut). Le troisime est le groupe (pas de groupe par dfaut). Lorsque plusieurs cases font partie dun mme groupe, elles deviennent des boutons radio dont un seul peut tre coch. Un groupe est une instance de la classe CheckboxGroup, dfinie dans le package java.awt. Choice classe permettant de grer un pop-up menu de valeurs possibles. Le constructeur ne possde pas dargument. La liste des valeurs se construit en pas pas par la mthode addItem(String) o largument est la chane de caractres constituant litem ; getItemCount() retrouve le nombre ditems de la liste ; getSelectedIndex() retourne lindice de litem slectionn (0 pour le premier item) ; et getSelectedItem() retourne la chane correspondante. Container classe permettant de contenir dautres composants . Les composants sont ajouts par la mthode add dcrite ci-dessous. Parmi ceux quelle peut contenir, on trouve : Panel sous-classe la plus simple qui dfinit un espace dans lequel lapplication peut insrer nimporte quel autre composant, y compris un autre Panel. La classe Applet est un descendant de la classe Panel. Window sous-classe dfinissant une fentre, sans bord ni barre de menu. Label classe permettant dafficher une ligne de texte non ditable dans un Container. Le constructeur possde en gnral un argument, la chane de caractres constituant le label. List classe permettant de grer une liste de valeurs possibles . Contrairement au pop-up menu (Choice), plusieurs des valeurs possibles sont prsentes dans une sous-fentre et on peut autoriser lutilisateur slectionner plusieurs des valeurs. Le premier argument du constructeur est le nombre de lignes visibles dans la sous-fentre. Mettre true en deuxime argument (optionnel) autorise le choix multiple. Les valeurs possibles sont insres dans la liste laide de la mthode addItem(String) (remplace par add(String) depuis la version 1.1). getSelectedIndexes() retourne le tableau des indices des items slectionns. getSelectedItems() retourne le tableau des chanes de caractres slectionnes. TextComponent classe permettant de grer du texte ditable . Elle contient deux sous-classes :
54/59
2013 - 2014
Applets et fentres
TextArea qui permet laffichage et ldition de plusieurs lignes de texte dans une sous-fentre. Le constructeur peut tre utilis avec un argument, le texte afficher. Les deuxime et troisime arguments optionnels sont les nombres de lignes et de colonnes. On peut ajouter un dernier argument pour grer la prsence dascenseurs. Ses valeurs possibles sont TextArea.SCROLLBARS_NONE pour interdire les ascenseurs, TextArea.SCROLLBARS_HORIZONTAL_ONLY ou TextArea.SCROLLBARS_VERTICAL_ONLY pour avoir un ascenseur horizontal ou vertical, et TextArea.SCROLLBARS_BOTH pour avoir les deux (par dfaut). TextField qui permet laffichage et ldition dune simple ligne de texte. Parmi les mthodes utilisables dans les deux sous-classes, on trouve getText() qui retourne le texte affich, getSelectedText() qui retourne la partie de texte slectionne, setText(String) qui remplace le texte, et setEditable(boolean) qui permet dautoriser (argument true) ou dinterdire (argument false) ldition par lutilisateur du texte affich. Pour TextArea, on peut aussi utiliser append(String) qui ajoute la fin du texte affich celui pass en argument.
2013 - 2014
55/59
Applets et fentres
2013 - 2014
Applets et fentres
riter de la classe FocusAdapter qui les prdfinit comme ne faisant rien. On attache un vnement FocusEvent un bouton (ou un autre lment graphique) par la mthode addFocusListener. KeyEvent Gnr lorsquune touche du clavier a t utilise. Linterface KeyListener possde trois mthodes, dont largument est lvnement KeyEvent dclencheur : keyPressed dclenche lorsquune touche est enfonce, keyReleased lorsque la touche est relache, et keyTyped dclenche lorsque la touche a t tape. Plutt quimplmenter linterface, on peut hriter de la classe KeyAdapter qui prdfinit les 3 mthodes comme ne faisant rien. On attache un vnement KeyEvent un bouton (ou un autre lment graphique) par la mthode addKeyListener. MouseEvent Gnr par certaines actions de la souris. Il existe deux interfaces utiles : MouseListener et MouseMotionListener. La premire possde cinq mthodes : mouseClicked (souris clique sur le bouton ou llment graphique), mouseEntered (pointeur de la souris entr sur llment graphique), mouseExited (pointeur de la souris sorti de llment graphique), mousePressed (un bouton souris enfonc sur llment graphique) et mouseReleased (bouton souris relach). La seconde interface possde deux mthodes : mouseMoved (souris dplace) et mouseDragged (souris clique sur llment graphique, puis dplace). Toutes ces mthodes ont pour argument lvnement MouseEvent dclencheur. Plutt que des interfaces, on pourra hriter de MouseAdapter ou de MouseMotionAdapter pour viter de dfinir toutes les mthodes. On attache un vnement MouseEvent un bouton (ou un autre lment graphique) par la mthode addMouseListener et/ou addMouseMotionListener. Canvas FocusEvent Gnr lorsque la zone du Canvas prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise dans la zone du Canvas. MouseEvent Gnr par certaines actions de la souris sur le Canvas. Checkbox ItemEvent Gnr lorsque la case (ou un item de liste) change dtat : passage de non coch (ou non slectionn) coch (ou slectionn), ou linverse. Linterface ItemListener ne possde que la mthode itemStateChanged dont largument est lvnement ItemEvent dclencheur. On attache un vnement ItemEvent une case cocher (ou un autre lment graphique) par la mthode addItemListener. FocusEvent Gnr lorsque la case cocher prend ou perd le focus.
2013 - 2014
57/59
Applets et fentres
KeyEvent Gnr lorsquune touche du clavier a t utilise sur la case cocher. MouseEvent Gnr par certaines actions de la souris sur la case cocher. Choice ItemEvent Gnr lorsquune des possibilits de choix passe de non slectionne slectionne, ou linverse. Un vnement ItemEvent possde la mthode getItem() indiquant litem affect par le changement. FocusEvent Gnr lorsque la zone de choix prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise sur la zone de choix. MouseEvent Gnr par certaines actions de la souris sur la zone de choix. Container FocusEvent Gnr lorsque le Container prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise dans le Container. MouseEvent Gnr par certaines actions de la souris sur le Container. WindowEvent (uniquement pour un lment Window) Gnr par certaines actions sur la fentre. Linterface WindowListener possde sept mthodes : windowActivated (fentre active, donc recevant la frappe au clavier), windowClosed (fentre ferme par sa mthode dispose()), windowClosing (fermeture de la fentre par lutilisateur), windowDeactivated (fentre dsactive), windowIconified (mise en icone de la fentre), windowDeiconified (dsiconification de la fentre) et windowOpened (premire ouverture de la fentre). Toutes ces mthodes ont pour argument lvnement WindowEvent dclencheur. Plutt que dimplmenter WindowListener, on peut hriter de WindowAdapter ce qui vite de dfinir toutes les mthodes. On attache un vnement WindowEvent une fentre par la mthode addWindowListener. Label FocusEvent Gnr lorsque la zone du Label prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise dans la zone du Label. MouseEvent Gnr par certaines actions de la souris sur la zone du Label.
58/59
2013 - 2014
Applets et fentres
List ActionEvent Gnr lorsquune action comme un double clic est excute sur un lment de la liste. ItemEvent Gnr lorsquune des possibilits de choix passe de non slectionne slectionne, ou linverse. Un vnement ItemEvent possde la mthode getItem() indiquant litem affect par le changement. FocusEvent Gnr lorsque la zone de choix prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise sur la zone de choix. MouseEvent Gnr par certaines actions de la souris sur la zone de choix. TextComponent TextEvent Gnr lorsque le texte du composant a t modifi. Linterface TextListener ne possde que la mthode textValueChanged, dclenche lorsque le texte a t modifi. Cette mthode a pour argument lvnement TextEvent dclencheur. On attache un vnement TextEvent un composant de texte par la mthode addTextListener. FocusEvent Gnr lorsque la zone de texte prend ou perd le focus. KeyEvent Gnr lorsquune touche du clavier a t utilise dans la zone de texte. MouseEvent Gnr par certaines actions de la souris sur la zone de texte. ActionEvent (uniquement pour un lment TextField) Gnr lorsquune action comme un return est excute sur la zone de texte.
2013 - 2014
59/59