Top Posters
Since Sunday
s
1
r
1
D
1
g
1
g
1
1
A free membership is required to access uploaded content. Login or Register.

Java Bases.docx

Uploaded: 7 years ago
Contributor: divya
Category: Computer Science
Type: Other
Rating: N/A
Helpful
Unhelpful
Filename:   Java Bases.docx (2.26 MB)
Page Count: 151
Credit Cost: 3
Views: 151
Last Download: N/A
Transcript
Les Bases Javascript Rapide historique OAK fut son nom avant qu'il ne s'appelle JAVA mot argot pour caf ceci apparemment cause de la grande quantit de ce breuvage ing r par les programmeurs C'est chez SUN MICROSYSTEM qu'il naquit pour pallier le manque d'adaptabilit du C dans le d veloppement d'application de type domotique A la m me p riode Internet fait son entr e avec la langage HTML Tr s vite le contenu des pages WEB demandera de l'interactivit formulaires de saisie et JAVA et ses caract ristiques devient le langage du WEB Du fait du peu d'encombrement des programmes crits en JAVA le temps de t l chargement par le WEB est r duit Mais surtout Java est pr sent comme le langage universel de demain pouvant tre utilis sur n'importe quelle plate-forme technique Linux MacIntosh Windows IBM Qu'y a-t-il derri re ce miracle la JVM Java Virtual Machine Chaque environnement technique a sa JVM c'est elle qui rend le dialogue possible entre un programme crit en JAVA et le reste de l'environnement technique Malheureusement l'universalit de JAVA risque de rester une belle id e Deux grands acteurs ont un r le pr pond rant dans la mise en place de JAVA JAVASOFT filiale de SUN MICROSYSTEM MICROSOFT Comme son habitude la firme de Bill GATES essaie d'imposer ses propres standards mais SUN et ses partenaires dont IBM ne laissent pas la d rive s'installer Nous parlerons donc assez fr quemment du JDK la version SUN et de visual J la version Microsoft chacun ayant son propre environnement de d veloppement outils du programmeur allant autour de JAVA Les bases du langage restent les m mes et tout au long de ce support nous tenterons de rester dans les l ments communs aux deux plates-formes Les bases du langage La syntaxe Quel que soit le langage y compris le langage humain il se doit de respecter un certain nombre de r gles Pour construire une phrase il nous faut un verbe qui indique le type d'action mener puis un sujet et des compl ments qui permettent de pr ciser l'environnement de l'action En programmation nous aurons des instructions qui indiqueront la machine ce qu'elle doit faire Une instruction JAVA se termine par un Exemple import java awt Une instruction java peut tre crite sur plusieurs lignes de source Il est imp ratif de bien commenter un programme quel que soit le langage utilis Ces commentaires ne sont pas pris en compte lors de l'ex cution du programme ils sont l pour que chacun se retrouve vite dans un programme N'oubliez pas vous mettrez quinze jours r aliser un programme qui sera maintenu pendant des ann es Faites des commentaires brefs et bien a r s et d s que vous utilisez des trucs et astuces faites l'effort de les expliquer en clair Un commentaire commence par et se termine par le saut la ligne suivante Ceci est un commentaire occupant une ligne Instruction JAVA Ceci est un commentaire occupant une ligne la suite d une instruction S il occupe plusieurs lignes il faut l encadrer par Ceci est un commentaire occupant plusieurs ligne ligne n ligne n ligne n Pour toutes les entit s que vous allez utiliser vous lui donnerez un nom aussi appel identificateur Cet identificateur doit respecter quelques r gles de nommage Le premier caract re doit tre une lettre La suite doit tre compos e de lettres de chiffres Ne pas y mettre d'espace de tabulation de retour chariot de passage la ligne Ne pas tre un mot r serv JAVA Donnez un nom significatif qui permettra une lecture plus facile du code la longueur autoris e pour un nom vous laisse de quoi vous exprimer Si vous utilisez les lettres minuscules et les lettres majuscules le nom est consid r comme diff rent langage casse sensitive Exemple le nom Compteur et le nom compteur d signe deux entit s diff rentes Selon ce que vous nommerez il sera n cessaire de mettre la premi re lettre En minuscule pour les variables et les m thodes En majuscule pour les classes ou les interfaces Ces diff rents termes seront revus en d tail plus loin La d finition des variables et des constantes Quand nous d marrons en programmation il est important de comprendre que l'ex cution d'un programme se fait dans la m moire de l'ordinateur que nous pourrions comparer avec notre cerveau Il y a d'un cot les instructions faire c'est dire les actions mener mais il faut galement des l ments sur qui porteront les actions Ces diff rents l ments sont stock s m moris s dans ce que j'appellerai pour l'instant des cases m moires Toujours pour faire le parall le avec le cerveau humain quand quelqu'un d raille on dit souvent qu'il a qu'une case de vide Notre brave machine est pareil il lui faut des cases qui auront un nom identificateur et un contenu Le nom correspond l'adresse de la case m moire c'est l'endroit physique o le programme peut aller chercher l'information Comme il serait compliqu de travailler avec une liste d'adresse et surtout tr s peu lisible un nom est donn et la machine fait le lien entre le nom indiqu que vous comprenez et l'adresse que seule la machine conna t Il y a une diff rence selon la nature du contenu parfois on souhaitera y stocker des caract res pour m moriser par exemple un pr nom d'autres fois on souhaitera y stocker des chiffres des nombres pour m moriser un salaire Lors de l'ex cution d'un programme la machine a besoin de conna tre la nature du contenu de la case qu'elle manipule nous parlerons de type de donn es Nous utiliserons les types de donn es suivants Entiers R els Bool ens Caract res Cha nes de caract res Avec certains types de donn es la taille de l'emplacement m moire est connu d'office cas des entiers par contre dans d'autres cas il nous faudra indiquer la taille de l'emplacement utiliser cas des cha nes de caract res En r sum une variable est d finie par Un nom ou identificateur Une nature de donn es enti re cha ne de caract res Il existe des mots r serv s pour le langage ces mots ne doivent pas tre utilis s comme nom pour des variables constantes ou objets Il existe des mots r serv s pour le langage ces mots ne doivent pas tre utilis s comme nom pour des variables constantes ou objets Une taille ou longueur Les entiers Selon la valeur maximale que devra contenir la variable nous la d finirons en byte bits pour des valeurs comprises entre - et short bits pour des valeurs comprises entre - et int bits pour des valeurs comprises entre et long bits pour des valeurs comprises entre et Par d faut Java stocke les litt raux en int Exemples int n r serve un emplacement pour une valeur enti re nomm e n short s r serve un emplacement pour une valeur enti re courte nomm e s Dans l'exemple ci dessus en plus de la r servation de l'emplacement m moire nous lui affectons une valeur initiale qu'il sera possible de faire voluer dans la suite du programme Les r els Un r el est un nombre virgule avec ou sans exposant Selon la valeur maximale que devra contenir la variable nous la d finirons en float bits double bits Par d faut Java stocke les r els en double Exemple double nTva r serve un emplacement de nom nTva pour une valeur r elle double Les bool ens Une valeur bool enne ne peut prendre que deux valeurs vraie mot cl true fausse mot cl false car le courant passe ou ne passe pas Une valeur bool enne ne peut pas tre convertie dans un autre type Les caract res Ils correspondent a une donn e contenant un seul caract re Ils sont stock s sur bits Exemple char R ponse 'O' r serve un emplacement d'un caract re et se nommant R ponse Dans l'exemple ci-dessus nous avons affect la valeur O la variable de type char nomm e R ponse Notez que la valeur affect e est mise entre guillemets quand l'affectation concerne un type caract re ou cha ne de caract res Ce n'est pas le cas pour l'affectation de variables de type num rique entier ou r el Vous pouvez mettre un caract re qui repr sente un chiffre vous n'aurez aucune alerte Cependant vous ne pourrez pas utiliser une telle variable pour faire des calculs Les cha nes de caract res Elles correspondent une donn e contenant une suite de caract res Bien que nous voquions les cha nes de caract res dans ce paragraphe sachez que vous ne manipulez pas ici un type de donn es mais un objet d'une classe String Exemple String str Ceci est une cha ne de caract res Mais qu'est ce qu'une classe me direz-vous R ponse dans quelques chapitres Conventions de noms Pour une meilleure lisibilit nous utiliserons des conventions que nous d taillerons tout au long de ce document et que nous vous demandons de respecter Les identificateurs de variables sont crits en minuscule en commencent par b pour les bool ens bOk n pour les entiers int nAge l pour les entiers longs lIndice d pour les r els dSalaire str pour les cha nes de caract res strNom i pour les indices iCpt frame pour les fen tres frameGesPers panel pour les panneaux panelSaisie pane pour les pane lbl pour les labels ou intitul s lblAdresse cmd pour les boutons cmdOk txt pour les textarea txtNom fld pour les textfield fldObservation pop pour les popmenu popPersonne La d finition des tableaux Un tableau est une variable qui contient une liste d' l ments de m me type de donn es ou de m me classe Pour pouvoir utiliser un tableau il faut passer par La d claration du tableau La cr ation du tableau car un tableau est un objet Java L'acc s aux l ments du tableau Comment d clarer un tableau TypeDonn e nomEl ment char lettre d clare un tableau nomm lettre dont chaque l ment est de type caract re Comment le cr er nomEl ment new TypeDonn e nb l ments lettre new char cr e le tableau de l ments de type caract re Comment atteindre un l ment pr cis l'int rieur du tableau nomEl ment W permet de mettre la lettre W dans le quatri me poste du tableau car le premier poste a l'indice Les op rateurs Les op rateurs binaires arithm tiques Ce sont les classiques op rateurs qui permettent de faire des calculs et de stocker le r sultat obtenu dans une variable Op rateur D finition Exemples Affectation nNum Addition nTtc nHt nTva - Soustraction nInd nInd - Multiplication nInd nInd - Division enti re nInd nInd Reste de la division enti re nInd nInd - Addition nTtc nHt nTva - Soustraction nInd nInd - Multiplication nInd nInd - Division nInd nInd L'affectation permet d'envoyer la valeur se trouvant droite du dans le contenu de la zone dont le nom se trouve gauche du nTauxTva envoi la valeur dans la variable nTauxTva Il est possible d'affecter une valeur directement indiqu e derri re le mais aussi d'affecter une valeur qui est contenue dans une autre variable de type compatible vous ne pourrez pas affecter n'importe quelle valeur dans n'importe quelle variable une variable de type double ne peut tre envoy e dans variable de type cha ne de caract re nValAvant nValEnCours envoie le contenu de nValEnCours dans le contenu de nValAvant L'addition la soustraction permettent de faire le calcul demand partir des variables et ou constantes num riques indiqu es et de mettre le r sultat dans la variable devant le signe d'affectation nTtc nHorsTaxe nTaux Tva permet de faire avant il y a un ordre de prise en compte des op rateurs pour ne pas trop vous poser de questions mettez des parenth ses pour d finir l'ordre de calcul Les conversions transtypage Lorsque vous avez appris faire des additions l' cole primaire vous avez d entendre la phrase 'on n'ajoute pas des carottes et des navets' En java c'est toujours vrai Lorsque l'op ration que vous voulez ex cuter attend un entier vous ne pouvez pas lui donner un double il faut donc convertir votre double en entier Pour cela indiquez le type souhait entre parenth ses devant le nom de la variable de type double Double dSalaire int nSalaire int dSalaire attention ici on a perdu les chiffres apr s la virgule Les conversions sont si possible faire dans le sens type de donn es de longueur plus petite vers un type de donn es de longueur plus grande Lorsque c'est dans l'autre sens attention aux troncatures op r es par la conversion Les conversions ne sont malheureusement pas toujours aussi simples Nous reprendrons cet aspect lors de la cr ation de la classe Outils page Les op rateurs binaires de comparaison Ils permettent d'effectuer des comparaisons logiques sur des op randes de m me type Op rateur D finition gal Diff rent Inf rieur Sup rieur Inf rieur ou gal Sup rieur ou gal ne pas confondre qui affecte et qui teste l' galit Quelques op rateurs binaires d'affectation Op rateur D finition Affectation Addition et affectation - Soustraction et affectation Multiplication et affectation D calage gauche et affectation D calage droite et affectation Les op rateurs logiques Op rateur D finition Non Et Ou Ou exclusif Et logique Ou logique Diff rence entre et value les expressions de part et d'autre du value l'expression de gauche si elle est fausse la partie de droite n'est pas valu e et le r sultat est faux Les op rateurs unaires Les op rateurs unaires d'incr mentation peuvent utiliser deux types de notations La notation pr fix e i qui quivaut valuer la valeur de i puis faire i La notation suffix e i qui quivaut faire i puis valuer la valeur de i Les op rateurs d'incr mentation sont Op rateur D finition Exemples Post incr mentation i Pr -incr mentation i -- Post d cr mentation i-- Pr -d cr mentation --i Oppos La notion de classes Une classe d crit une cat gorie d'objets avec des propri t s et des m thodes appel es aussi fonctions ou comportements qui lui sont propres C'est un moule qui va permettre de fa onner des individus appel s objet ou instance Prenons comme exemple une classe Salari s nom de la classe Salari s Attributs de cette classe Num ro matricule Cat gorie salariale Service Nom Montant du salaire M thodes ou comportements Affichage du salaire A partir de ce moule nous pouvons cr er des instances qui ont toutes les attributs et les comportements d finis dans la classe Ils diff rent par le contenu des attributs l'instance n aura pour nom Dupont l'instance n aura pour nom Durand - Classe objets ou instances de la classe Salari s Pour cr er une instance nous utiliserons new Salari s et nous donnerons cette instance un nom qui lui est propre dans notre exemple Dupont Salari s Dupont new Salari s Un programme est aussi une classe avec Un nom de classe Eventuellement des attributs Au moins une m thode m thode main pour les applications Le langage JAVA est un langage structur car un programme crit en JAVA est une suite de fonctions ou m thodes Nous trouvons plusieurs types de programmes crits en Java Les applications Java elles fonctionnent en autonome avec un syst me d'exploitation et une Java Virtual Machine Les applets Java elles fonctionnent par appel dans une page HTML il faut donc en plus un navigateur browser Les servlets application sp ciale ex cut e dans le cadre de la machine virtuelle du serveur Web Un programmeJava commence toujours par une ligne indiquant le nom de la classe et sa visibilit La fonction main est le point d entr e d une application JAVA Elle est donc obligatoire Une application java minimale nomm e Class serait public class Class public static void main String args System out println je suis une appli Java Quelques instructions pour crire votre premier programme Affichage d un message l cran System out println ceci est un message Il est possible d'afficher une ligne contenant la concat nation mise bout bout de variables et ou constantes System out println ceci est un message pour prenom Petite difficult affichage des lettres accentu es Vous devez utiliser le code UNICODE de la lettre concern e Lettre Code utiliser u a u u u String prenom moi System out println message envoy u u prenom Permet d'afficher message envoy moi R cup ration d une donn e saisie l cran Il y a d'autres fa ons de pratiquer que celle d crite ci-dessous Nous allons utiliser la commande qui permet de r cup rer un caract re char c c char System in read Nous avons d clarer une variable c de type char qui nous permet de r cup rer une position tap e sur le clavier par l'utilisation de la fonction System in read Pour r cup rer un pr nom il nous faut r cup rer les x caract res jusqu' ce que l'utilisateur fasse un retour chariot le caract re retour chariot est n ne s'invente pas c'est comme Maintenant il nous faut faire r cup ration d'un caract re jusqu' ce que ce caract re soit n La commande WHILE permet ce FAIRE TANT QUE while c char System in read ' n' S S C Les lignes qui suivent la ligne WHILE sont encadr es par et et contiennent les instructions r aliser si la condition mise derri re le While est vraie Dans notre cas nous rajoutons derri re la cha ne de caract res ayant S pour nom la valeur de C zone m moire de type caract re contenant le caract re tap au clavier ce qui nous donne une nouvelle valeur de S et ainsi de suite char System in read permet de transformer le caract re re u depuis le clavier en une donn e de type char on parle de casting transtypage ou conversion Cr ation d une premi re application Activit n Notre premi re application va consister demander la personne devant le clavier d'indiquer son nom puis nous lui enverrons un message Bonjour suivi du pr nom saisi Codez cette application puis essayez-la Correction voici un exemple possible de code pour l'application import java lang je d marre en JAVA public class Class public static String Lit String S char C while C char System in read ' r' S S C return S Point d'entr e principal de l'application public static void main String args throws java io IOException String prenom System out println tapez votre prenom prenom Lit System out println Bonjour prenom Explications Dans ce programme nous avons deux m thodes Lit et main Malgr qu'elle soit plac e en fin la m thode main est le d but du chemin suivi par la machine pour ex cuter le mode op ratoire constitu par les instructions Puis nous d finissons une cha ne de caract res nomm e prenom noter la non accentuation Le message tapez votre pr nom est envoy pour appara tre sur l' cran prenom Lit veut dire que dans prenom nous r cup rerons la valeur issue de l'ex cution de Lit Puis le message Bonjour Margo sera affich l' cran pr nom Lit d branche le mode op ratoire la ligne public static String Lit Que se-passe-t-il dans Lit Nous d finissons une cha ne de caract res nomm e S avec rien dedans et une variable C de type caract re Les caract res tap s au clavier sont r cup r s par l'instruction System in read puis convertis en caract res avant d' tre compar s au caract re n Nous bouclons gr ce au while jusqu' ce que le caract re n soit trouv Pourquoi n parce qu'il correspond ce qu'envoie le clavier dans le buffer accessible au programme quand on fait passage la ligne suivante Nous avons vu comment d clarer des variables certes mais pour quoi faire Le faire va se traduire par des instructions plus ou moins sophistiqu es Les plus courantes constituent des structures de base L'alternative ces instructions permettent l'ex cution d'une ou plusieurs instructions en fonction d'une condition La r p titive ces instructions permettent de r p ter l'ex cution d'une ou plusieurs autres instructions Les structures de base l'alternative simple La forme la plus simple est la suivante if condition instruction condition est une expression crite avec des variables des constantes et des op rateurs de comparaison vu plus haut Instruction est ex cut e si le r sultat du test exprim par condition est vrai Exemple si le salaire est plus petit que alors il est augment de if dSalaire dSalaire dSalaire Une deuxi me forme est possible if condition instruction else instruction condition est une expression crite avec des variables des constantes et des op rateurs de comparaison Instruction est ex cut e si le r sultat du test exprim par condition est vrai Instruction est ex cut e si le r sultat du test exprim par condition est faux Exemple si le salaire est plus petit que alors il est augment de sinon il est augment de if dSalaire dSalaire dSalaire else dSalaire dSalaire Les deux formes pr c dentes ne permettent l'ex cution que d'une instruction Il est souvent n cessaire d'ex cuter plusieurs instructions On parle de bloc d'instructions il est crit entre et La syntaxe est alors if condition bloc d'instructions si condition vraie else bloc d'instructions si condition fausse Exemple calcul d'un montant TTC avec TVA si le client est en France ou pas de TVA dans le cas contraire Nous supposons conna tre la quantit command e et le prix unitaire de l'article command dMontantHt dQuantit Cde dPrixUnitaire if strPays France dMontantTva dMontantHt dMontantTtc dMontantHt dMontantTva else dMontantTva dMontantTtc dMontantHt L'alternative imbriqu e Il est possible d'imbriquer les if quand on a une succession de tests faire Exemple augmentation diff rente en fonction de la qualification professionnelle if strQualif O dSalaire dSalaire else if strQualif E dSalaire dSalaire else if strQualif M dSalaire dSalaire else if strQualif A dSalaire dSalaire else dSalaire dSalaire Mais il est possible de rendre plus lisible l' criture en utilisant l'instruction switch case et break sont des instructions allant avec switch Le case permet le test de la condition sur une variable de type l mentaire mon cher Watson Break permet l'abandon anticip de la boucle Char strQualif switch strQualif case 'O' dSalaire dSalaire break case 'E' dSalaire dSalaire break case 'M' dSalaire dSalaire break case 'A' dSalaire dSalaire break default dSalaire dSalaire System out println augmentation termin e L'instruction break provoque un d branchement et l'instruction qui est ex cut e la suite est le System out println It rative while condition bloc d'instructions tant que condition vraie Exemple saisie d'un pr nom et affichage de bonjour suivi du pr nom jusqu' ce que la saisie soit Bye While strPrenom Bye System print out Bonjour strPrenom System print ln permet l'affichage d'une cha ne de caract res permet de concat ner de mettre bout bout les deux cha nes de caract res Bonjour et strPrenom Boucle Quand la condition d pend d'un indice qui volue chaque fois il est possible d' crire int nCpt int nTotal while nCpt nTotal nTotal nCpt nCpt nCpt Mais il est plus lisible d' crire For nCpt nCpt nCpt nTotal nTotal nCpt L'instruction break permet de sortir de la boucle pour aller l'instruction qui suit la fin du bloc L'instruction continue permet galement de sortir de la boucle mais en se d branchant vers une tiquette dont le nom est indiqu derri re continue Une tiquette est compos e d'un nom suivi par deux points suite Quelques notions sur l'orient e objet Les classes et les objets Une classe est un mod le abstrait utilis pour cr er plusieurs objets pr sentant des caract ristiques communes et des comportements communs Une instance c'est un objet concret Parmi la classe des humains M Dupont est un objet de la classe une instance de la classe Il est n cessaire de cr er la classe Classe Attributs Caract ristiques de d finition apparence tat M thodes Comportements Puis on instance un objet par new c'est dire qu'on cr e un objet pr cis Une variable de classe est un l ment qui d finit un attribut valable pour tout objet de la classe La variable s'applique la classe elle-m me Une seule valeur est donc stock e quelque soit le nombre d'objets cr s pour cette classe Une variable d'instance est une information qui d finit un attribut d'un objet donn d'une instance donn e Dans la classe de l'objet on trouve de quel type d'attribut il s'agit String int Les variables d'instance sont aussi appel es variables d'objet Une valeur est donc stock e pour chacun des objets cr s pour cette classe Une biblioth que de classes est un groupe de classes con ues pour tre utilis es avec d'autres programmes que ceux pour lesquels ils ont t initialement cr s Elles permettent la r utilisation Exemple Dans la classe Salari on d finit l'attribut horaire travaill tous les salari s auront le m me horaire de base mais c'est un attribut qui peut varier dans le temps r duction de heures il s'agit d'une variable de classe Le mot cl static est utilis pour sa d finition Le nom du salari varie d'un salari l'autre c'est une variable d'instance Le coefficient de conversion de francs est une donn e qui ne varie pas dans le temps et qui est vrai quelque soit le salari on parle de variable valeur constante Le mot cl final est utilis pour sa d finition Salarie Comment d finir Une variable de classe Une variable d'instance Une constante - horaire de base - nom salari - Euro static double dHoraireBase String strNomSalarie final float fEuro M thodes Comportements Exemple d' criture pour cr er une classe Class Humains permet de d finir la classe String strCouleur String strRegion double dTaille attributs double dPoids boolean bContent Les m thodes Les m thodes sont des groupes d'instructions reli es les unes aux autres au sein d'une classe d'objets qui agissent sur les objets eux-m mes ou sur les objets d'autres classes Ces m thodes servent accomplir des taches sp cifiques au m me titre que les fonctions dans d'autres langages de programmation Elles sont toujours situ es l'int rieur de la classe Une m thode d'instance appel e m thode s'applique un objet de la classe Elle apporte une modification un objet donn Une m thode de classe s'applique la classe enti re c'est dire toutes les instances de la classe Le mot cl static est utilis pour sa d finition Class Humains D finition de la classe String strCouleur String strRegion double dTaille attributs double dPoids boolean bContent Attributs Void chercherManger if r gion Papouasie System out println Moi prendre arc System out println Mettre pagne et aller dans for t System out println Abattre grand caribou dPoids dPoids else if r gion Parisienne System out println Ne pas oublier la carte bancaire System out println Mon veston et je prends la voiture System out println Choisir parmi les plats cuisin s dPoids dPoids static void quiEsTu System out println Je suis un humain D finition d'une m thode d'instance ici j'ai pris quelques libert avec le gibier D finition d'une m thode de classe La syntaxe de la premi re ligne d'une fonction est Type Nom Fonction param tres liste des param tres Cette liste peut tre vide Le nom de la fonction a une longueur maxi de caract res Elle doit commencer par une lettre ou un caract re de soulignement La suite du nom peut contenir des lettres des noms des caract res de soulignement Il s agit du type de valeur renvoy e par la fonction Si aucune valeur n est renvoy e le type est void Puis vous avez un bloc commen ant par et finissant par entre ces deux signes sont plac s les instructions Rappel La fonction main est le point d entr e d une application JAVA Une m thode se termine quand on arrive en fin de bloc ou quand on a une instruction return Dans les deux cas l'ex cution est reprise en main par l'invocateur de la m thode Il peut y avoir plusieurs m thodes crites dans la m me classe Comment cririez-vous la m thode indiquant Miam Miam le caribou pour un papou content Baaaah pour un humain m content Succulent ce p'tit plat j'en reprendrai pour un parisien satisfait L'encapsulation L'encapsulation est un processus qui vise emp cher les variables d'une classe d' tre lues ou modifi es par d'autres classes Le sel moyen d'utiliser ces variables consiste appeler des m thodes de cette classe si elles sont accessibles c'est dire d finies avec le mot cl public Appel m thode avec passage de param tres Appel m thode avec passage de param tres Appel m thode Appel m thode attributs Appel m thode avec passage de param tres et retour de param tres Appel m thode avec passage de param tres et retour de param tres Appel m thode avec retour de param tres Appel m thode avec retour de param tres Les m thodes peuvent ne mener que des actions sur les donn es de la classe seul un ordre est donn par une m thode appelante une m thode appel e mener une action en utilisant des informations venant de l'ext rieur c'est dire que la m thode appelante met un ordre avec des informations pass es la m thode appel e qui utilise ces informations pour ex cuter les instructions qu'elle contient mener une action puis retourner des informations vers la m thode appelante mener une action en utilisant des informations transmises par la m thode appelante qui re oit en retour des informations mises par la m thode appel e this show Composant graphique sur lequel est appliqu la m thode show M thode show sans passage de param tres this show Composant graphique sur lequel est appliqu la m thode show M thode show sans passage de param tres - sans envoi de param tres Appel permet de montrer un composant graphique de type JFrame par exemple repr sent par le mot this dans cet exemple Aucune information ne se trouve entre les parenth ses M thode appel e Dans la ligne de d but de la m thode void signifie pas de retour d'informations en fin de m thode seule l'action demand e est men e - public abstract class Component extends Object implements ImageObserver MenuContainer Serializable public void show Signature de la classe D but de la m thode show Instructions de la m thode show Attributs de la classe Component public abstract class Component extends Object implements ImageObserver MenuContainer Serializable public void show Signature de la classe D but de la m thode show Instructions de la m thode show Attributs de la classe Component - avec envoi de param tres lblAdresse setText Coucou Composant de nom lblAdresse Information envoy e pour l'ex cution de la m thode Nom de la m thode lblAdresse setText Coucou Composant de nom lblAdresse Information envoy e pour l'ex cution de la m thode Nom de la m thode Appel permet de mettre Coucou comme contenu du composant qui a pour nom lblAdresse Les informations transmises sont indiqu es entre les parenth ses qui suivent le nom de la m thode M thode appel e - public class Label extends Component public void setText String strText Signature de la classe D but de la m thode setText Instructions de la m thode setText Attributs de la classe Label public class Label extends Component public void setText String strText Signature de la classe D but de la m thode setText Instructions de la m thode setText Attributs de la classe Label Dans la ligne de d but de la m thode void signifie pas de retour d'informations en fin de m thode seule l'action demand e est men e String strText correspond coucou de l'appel - avec passage et r cup ration de param tres Appel la m thode concat renvoie une cha ne de caract res obtenue par la mise la suite de deux autres cha nes de caract res C'est une m thode de la classe String strMot strD but concat StrFin Cha ne de caract res recevant le r sultat mis par la m thode concat Affectation Cha ne de caract res partir de laquelle est men e l'action de la m thode concat M thode concat avec passage de param tre strFin strMot strD but concat StrFin Cha ne de caract res recevant le r sultat mis par la m thode concat Affectation Cha ne de caract res partir de laquelle est men e l'action de la m thode concat M thode concat avec passage de param tre strFin strMot contientra strD but suivie de strFin - public final class String public String concat String str return strResultat Signature de la classe Retourne une cha ne de caract res D but de la m thode concat Instructions de la m thode concat Attributs de la classe String public final class String public String concat String str return strResultat Signature de la classe Retourne une cha ne de caract res D but de la m thode concat Instructions de la m thode concat Attributs de la classe String M thode appel e Dans la ligne d but de la m thode String est le type de donn e qui sera retourn e return termine la m thode il est suivi du nom de la donn e qui contient l'information retourn e et qui correspond la cha ne strMot de l'appel String str est la cha ne de caract res re ue elle correspond strFin dans l'appel Les m thodes constructeurs Consid rons une partie du source de la classe Label public class Label extends Component attributs de la classe public static final int LEFT public static final int CENTER public static final int RIGHT methodes constructeurs public Label code li la m thode public Label String strText code li la m thode public Label String strText int nalignment code li la m thode autres m thodes public String getText code li la m thode Nous y trouvons des m thodes dites constructeurs qui ont la particularit d'avoir le m me nom que la classe De plus elles sont public donc accessibles de l'ext rieur de la classe Ce sont les seules m thodes dont le nom commence par une majuscule Dans notre exemple de la classe Label vous d couvrez trois m thodes ayant le m me nom elles ont par contre une diff rence importante les param tres fournis Chacune de ces m thodes a un code un bloc d'instructions qui lui est sp cifique Dans les classes autres que Label certaines m thodes peuvent avoir besoin de cr er des objets des instances de la classe Label nous trouverons alors une instruction new Label lblNom new Label fera appel au code de la m thode dont la signature est public Label et qui construit un label vide Label lblNom new Label Adresse exp dition fera appel au code de la m thode dont la signature est public Label String strtext et qui construit un label avec le texte indiqu en contenu Label lblNom new Label Adresse exp dition Label LEFT fera appel au code de la m thode dont la signature est public Label String strText int nalignment et qui construit un label avec le texte indiqu en contenu et align comme indiqu par l'int Label LEFT Nous voyons que le point sert atteindre une m thode de la classe laquelle l'objet appartient mais aussi atteindre les attributs de la classe lorsque ceux ci ne sont pas protected ou private mais public String strContenu LblNom getText Label lblNom new Label Adresse exp dition Label LEFT Dans ces exemples nous avons la fois La d claration de l'objet String strContenu et Label lblNom L'instanciation faite par la m thode new Ces deux op rations peuvent se faire s parant mais toujours dans cet ordre L'h ritage L'h ritage est un m canisme qui permet une classe d'h riter de l'ensemble des comportements et des attributs d'une autre classe Une classe qui h rite d'une autre est appel e sous classe et la classe qui offre son h ritage une autre est appel e super classe En java chaque classe ne peut h riter que d'une super classe on parle d'h ritage simple Une classe peut avoir un nombre illimit de sous classes La super classe qui est le point de d part dans la hi rarchie java est la classe Object Notez qu'un nom de classe commence toujours par une majuscule C'est une convention que nous vous demandons de respecter Le sous classement est une op ration qui consiste cr er une nouvelle classe qui h rite d'une classe existante Tous les comportements et les attributs de la classe existante sont repris et la nouvelle classe ne comportera que les attributs nouveaux et les comportements nouveaux Comment cr er une sous classe public class Europeen extends Humains D finition de la sous classe public permet l'acc s aux autres classes qui en ont besoin Attributs nouveaux m thodes nouvelles Quand dans une super classe une m thode est publique elle ne peut tre red finie que par une m thode publique dans la sous classe Humain Couleur r gion taille poids sexe content tenue ChercherManger Europeen Papou Adresse code postal ville pays AllerEnVacances ChercherManger changerDeBivouac Dans l'exemple quand nous acc dons une instance de la classe Europ en nous avons Couleur r gion taille poids sexe content tenue et aussi adresse code postal ville pays et les m thodes utilisables sont ChercherManger et AllerEnVacances Si nous acc dons une instance de la classe Papou nous n'avons pas d'attributs suppl mentaires par rapport Humain mais nous disposons de deux m thodes ChercherManger et changerDeBivouac Si dans la classe Europ en on r crit la m thode ChercherManger on dit que l'on red finit la m thode C'est toujours la m thode d finie au niveau le plus bas qui est pris en compte Quand nous n'avions encore d fini que Humain la m thode ChercherManger tait prise dans la classe Humain Dans le deuxi me cas nous avons cr une sous classe Europ en et si on a instanci Europ en ChercherManger est prise dans la classe Europ en Port e d'une variable La port e d'une variable est la partie de programme dans laquelle une variable existe et peut tre utilis e Variable de classe port e toute la classe Variable d'instance port e toute la classe Variable locale port e le bloc o elle est et les blocs de niveaux inf rieurs contenus dans le bloc o elle est d clar e public class Class String prenom public static String Lit String S char C while C char System in read ' r' S S C return S Point d'entr e principal de l'application public static void main String args throws java io IOException System out println tapez votre prenom prenom Lit System out println Bonjour prenom Dans cet exemple la cha ne de caract res prenom est connue dans toute la suite de la classe on parle d'une variable globale car elle est d clar e avant toute m thode Au contraire la cha ne de caract res S est une variable qui ne peut tre utilis e que dans la m thode LIT on parle alors de variable locale Un m me nom de variable peut tre d clar dans plusieurs m thodes mais ceci est viter M me s'il s'agit d'un m me nom la variable d clar e dans la m thode a sa propre existence Quelque soit son contenu il ne peut tre utilis que dans la m thode La variable de m me nom dans la m thode aura un contenu qui sera diff rent Le polymorphisme Nous en avons eu une repr sentation avec notre papou et notre parisien Quand on envoie le message allerManger le Papou et l'Europ en bien qu'objet de la m me classe ont des r actions diff rentes puisque l'un prend son arc et va en for t et l'autre prend sa voiture et va au supermarch Au m me message ils ont deux r actions diff rentes en fonction de leurs attributs M thodes graphiques Elles se trouvent dans la classe graphique java awt Graphics qu'il faut importer en d but de source La ligne suivante montre la syntaxe pour importer toutes les classes de java awt import java awt Dans la syntaxe qui suit x y correspondent aux coordonn es du coin haut gauche d'un rectangle contenant la figure Les diff rentes m thodes sont - trac d'une ligne drawLine x y indique les coordonn es d'une extr mit da la droite et x y pour l'autre extr mit Tous les param tres sont de type integer drawLine x y x y - trac d'un rectangle drawRect Tous les param tres sont de type integer drawRect x y longueur hauteur - trac d'un rectangle plein fillRect Tous les param tres sont de type integer fillRect x y longueur hauteur - trac d'un rectangle en relief draw DRect tatbouton est un bool en indiquant bouton relev si vrai ou abaiss si faux draw DRect x y longueur hauteur etatbouton - trac d'un rectangle au coins arrondis drawRoundRect d part est l'angle en degr s heures sur montre anglearc est l'angle d'ouverture par rapport d part Tous les param tres sont de type integer drawRoundRect x y longueur hauteur d part anglearc - trac d'un ovale Tous les param tres sont de type integer drawOval x y longueur hauteur - trac d'un ovale plein fillOval x y longueur hauteur - trac d'un arc drawArc x y longueur hauteur - trac d'un arc plein fillArc x y longueur hauteur - trac d'un polygone tablx est un tableau de coordonn es x tably est un tableau de coordonn es y tablp est un tableau de nombre de points drawPolygon x y longueur hauteur - trac d'un polygone plein fillPolygon x y longueur hauteur L'applet Une Applet java est un programme qui est ex cut dans un browser tel que Internet explorer ou Nescape Une applet est int gr e dans une page HTML et est automatiquement t l charg e sur le poste client Elle est ensuite ex cut e par celui-ci Cr ation d'applet Pour int grer du code Java dans une page HTML il faut donc cr er une applet Prenons comme exemple l'applet suivante qui affiche dans une page HTML le texte Bonjour comment allez-vous Nous avons besoin de deux l ments Un de type applet L'autre de type page HTML Consid rons tout d'abord l'applet import java awt import java applet public class Applet extends Applet Point d'entr e de l'applet Label bonjour new Label Bonjour comment allez-vous public void init setBackground Color cyan add bonjour Le source de la page HTML est HTML HEAD TITLE Applet vous avez dit Applet TITLE HEAD BODY P applet CODE Applet class WIDTH HEIGHT applet P BODY HTML CODE indique le nom du fichier contenant la classe principale de l'applet WIDTH indique la largeur en pixels occup e par l'applet sur l' cran HEIGHT indique la hauteur en pixels occup e par l'applet sur l' cran au d marrage Mise en uvre Tout programme java est une classe Une applet n' chappe pas cette r gle Si on veut cr une applet on doit tendre la classe java applet Applet Cette nouvelle classe contient des m thodes n cessaires la gestion des applets et l'interaction de celle-ci avec le browser Les m thodes les plus importantes sont public void init Le browser fait appel cette m thode quand l'applet est charg e ou recharg e Cette m thode charge les informations telles que images sons et r cup re les param tres pass s depuis la page HTML On ne doit pas trouver init plusieurs fois dans une instance d'applet Si cette m thode n'est pas indiqu e dans l'applet c'est la m thode originelle qui est utilis e public void start Apr s avoir t initialis e l'applet est d marr e par cette m thode Elle est galement red marr e apr s avoir t stopp e lorsqu'elle est nouveau visible On peut trouver plusieurs start dans une instance d'applet public void stop Cette m thode permet l'applet de s'arr ter lorsqu'elle n'est plus visible suite un changement de page HTML par exemple public void destroy L'applet est d truite lorsque le browser s'arr te ou avant que l'applet ne soit recharg e Cette m thode doit tre remplac e si l'on veut stopper des threads cr s par start de l'applet La notion de thread sera revue plus loin public void paint Graphics g Cette m thode est appel e chaque fois que l'on veut redessiner l'applet Le param tre est de type Graphics et repr sente la surface de dessin sur laquelle on doit travailler Autre exemple d'applet import java awt import java applet public class Applet extends Applet Font font public void init font new Font TimesRoman Font PLAIN public void paint Graphics g g setFont font g setColor Color red g drawString Y a pas eu de bug font getSize Autre exemple d'applet cette fois anim e par un changement de couleur import java awt import java applet public class Applet extends Applet implements Runnable thread tache String strLabel Font font boolean bgris false public void init font new java awt Font TimesRoman Font PLAIN strLabel getParameter MonNom public void paint Graphics g g setFont font if bGris g setColor Color lightGray else g setColor Color black g drawString strtLabel font getSize public void start tache new Thread this tache start public void stop tache stop public void run while true try Thread sleep attente d'une seconde catch InterruptedException e bGris bGris inversion pour changt couleur repaint r affichage Passage de param tres depuis HTML vers l'applet Le source de la page HTML est HTML HEAD TITLE Applet vous avez dit Applet TITLE HEAD BODY P applet CODE Applet class WIDTH HEIGHT param name MonNom value Bibi applet P BODY HTML param name strNom value Bibi a t int gr entre les balises applet et applet Dans la m thode init de l'applet pour r cup rer le param tre transmis import java awt import java applet public class MonApplet extends Applet String strNom public void init strNom getParameter MonNom strNom vaut Bibi Utiliser AWT AWT Abstract Windowing Toolkit est un ensemble de classes permettant de cr er une interface utilisateur graphique GUI et de recevoir des informations de l'utilisateur par l'interm diaire de la souris ou du clavier Pour pouvoir utiliser ces classes il faut commencer par import java awt Les diff rents types d' l ments d'AWT Les conteneurs container Ils sont capables de contenir des canevas des composants graphiques ou d'autres conteneurs Les composants graphiques graphic componants Ce sont les objets traditionnels pr sents sue une interface graphique boutons champ texte Les canevas canvas Un canevas est un objet graphique simple sur lequel on ne peut que dessiner et afficher des images On parle aussi de toile de fond ou fond Les composants de fen tre windowing componants Ils permettent de cr er des fen tres frame des boites de dialogue dialog de g rer des menus et des barres de titre Fen tres et panneaux Un composant Window est un conteneur autonome de haut niveau sans bordure barre de titre ni barre de menus Bien qu'un composant Window puisse tre utilis pour impl menter une fen tre surgissante vous utiliserez normalement dans votre interface utilisateur une sous-classe de Window comme l'une des suivantes la place de la classe Window r elle Frame C'est une fen tre de haut niveau avec une bordure et un titre Un Frame cadre poss de les contr les de fen tre standard tels un menu syst me des boutons pour r duire ou agrandir la fen tre et des contr les pour la redimensionner Il peut aussi contenir une barre de menus Habituellement le conteneur principal de l'interface utilisateur d'une application Java contrairement une applet sera une sous-classe personnalis e d'une classe Frame La personnalisation consiste instancier et positionner d'autres composants dans le cadre d finir des libell s attacher des contr les aux donn es et ainsi de suite Exemple de cr ation d une fen tre import java awt public class Fen public static void main String args Frame frameExemple new Frame titre frameExemple setTitle Exemple fen tre taille de la fen tre largeur hauteur frameExemple setSize Couleur de fond pour la fen tre gris clair frameExemple setBackground Color lightGray affichage de la fen tre frameExemple show Le r sultat est le suivant La m thode show permet d afficher la fen tre Parfois il est n cessaire de cacher la fen tre par la m thode hide Il est possible d utiliser aussi la m thode setVisible setVisible true pour afficher la fen tre setVisible false pour la cacher Dialog Une fen tre surgissante semblable un Frame mais qui n cessite un parent et ne peut pas contenir de barre de menus Les bo tes de dialogue sont utilis es pour obtenir une saisie ou pour communiquer des avertissements Elles sont g n ralement temporaires et de l'un des types suivants Modale Emp che la saisie dans n'importe quelle autre fen tre de l'application tant que le dialogue n'est pas referm Non modale Permet d'entrer des informations la fois dans la bo te de dialogue et dans le reste de l'application C est galement un conteneur pour des panneaux des boutons Exemple de cr ation d une boite de dialogue import java awt public class Dial public static void main String args Dialog dialogExemple new Dialog new Frame true titre dialogExemple setTitle Exemple boite de dialogue taille de la fen tre largeur hauteur dialogExemple setSize Couleur de fond pour la fen tre gris clair dialogExemple setBackground Color lightGray affichage de la fen tre dialogExemple show La classe dialog permet d utiliser un ensemble de m thodes sp cifiques setModal permet de d finir si il y a possiblit de saisie true ou nom false dans la boite de dialogue setResizable permet d indiquer si l utilisateur peut l aide de la souris redimensionner la boite de dialogue true ou non false Show et hide comme pour les frame La classe FileDialog permet de cr er une boite de dialogue de gestion de fichiers Panel Un composant Panel panneau est un conteneur d'interface utilisateur simple sans bordure ni titre utilis pour regrouper d'autres composants tels des boutons des cases cocher ou des champs de texte Les panneaux sont incorpor s dans un autre conteneur d'interface utilisateur par exemple dans un Frame un Dialog ou imbriqu s dans d'autres panneaux Applet Une sous-classe de la classe Panel utilis e pour construire un programme devant tre incorpor dans une page HTML et ex cut dans un navigateur HTML ou dans un visualiseur d'applet Applet tant une sous-classe de Panel elle peut contenir des composants mais elle ne poss de ni bordure ni titre Les mises en page Pour d finir l apparence de l interface graphique on utilise un gestionnaire de mise en page layout manager Il existe plusieurs gestionnaires de mises en page permettant chacun une mise en forme diff rente FlowLayout gestionnaire par d faut C est une mise en page o les composants sont plac s les uns la suite des autres en fonction de l ordre des instructions d ajout de composants dans le conteneur FlowLayout miseEnPage new FlowLayout FlowLayout CENTER Exemple import java applet import java awt public class TestFlow extends Applet public void init FlowLayout miseEnPage new FlowLayout FlowLayout CENTER setLayout miseEnPage for int i i i Button cmdTest new Button commande I add cmdTest GridLayout C est une mise en page en ligne-colonne Les composants auront tous la m me taille Exemple cr ation d une mise en page de colonnes sur lignes avec un espacement horizontal de et un espacement vertical de Le code sera identique l exemple ci-dessus sauf la ligne d instantiation de la mise en page GridLayout gridExemple new GridLayout BorderLayout c est une mise en page avec la pr sentation suivante NORTH WEST CENTER EAST SOUTH Exemple import java applet import java awt public class TestBorder extends Applet BorderLayout miseEnPage new BorderLayout Button cmdTest new Button Nord Button cmdTest new Button Ouest Button cmdTest new Button Centre Button cmdTest new Button Est Button cmdTest new Button Sud public void init setLayout miseEnPage add NORTH cmdTest add WEST cmdTest add CENTER cmdTest add EAST cmdTest add SOUTH cmdTest Si vous souhaitez g rer vous-m mes les emplacements de vos composants dans un m me conteneur par exemple un Frame incorporer votre source la m thode suivante x et y sont les coordonn es exprim es en cellules larg et haut sont le nombre de cellules en largeur et en hauteur largcol et hautlig sont les proportions prises par les lignes colonnes void placeElement GridBagConstraints gbc int x int y int larg int haut int largCol int hautLig gbc gridx x gbc gridy y gbc gridwidth larg gbc gridheight haut gbc weightx largCol gbc weighty hautLig Avant d effectuer le add du composant d finissez son emplacement Dans l exemple colonne ligne sur case en largeur et case en hauteur repr sentant de la largeur du conteneur placeElement gblEmplacement gblEmplacement anchor GridBagConstraints WEST Cr ation de l instance du composant par new gblGrille setConstraints chkMademoiselle gblEmplacement D s que vous commencer positionner un composant sur une ligne ou sur une colonne vous devez indiquer le pourcentage tenu par cette ligne ou cette colonne Pour les composants suivants sur la m me ligne ou la m me colonne le pourcentage est mis ce qui indique que l on reprend celui fix avec le premier composant Le total des pourcentages doit tre exactement Intitul s Label Saisir un n de client Ou le d but de son nom Saisir un n de client Ou le d but de son nom Ils sont aussi appel s tiquettes Ils permettent de cr er du texte sur une interface utilisateur Cr er un intitul Label strEtiq new Label Saisir un n de client On peut indiquer l'emplacement de l'intitul Label strEtiq new Label Choix Label CENTER au centre Label strEtiq new Label Choix Label RIGHT droite Il est possible de cr er un label vide que l'on remplira plus tard par setText Label strVide new Label Mettre un texte dans un intitul strVide setText Bonjour R cup rer le texte d'un intitul String strQuoi strVide getText Dans tous les cas il faut utiliser la m thode init et y indiquer Add strVide Champs texte TextField Saisir un n de client Ou le d but de son nom Saisir un n de client Ou le d but de son nom C'est un composant dans lequel l'utilisateur peut saisir du texte Cr er un champ texte de caract res sans texte TextField strDebut new TextField Cr er un champ texte de caract res avec du texte TextField strDebut new TextField ceci est ma valeur par d faut Pour masquer la saisie faite dans ce champ au fur et mesure exemple d'un mot de passe TextField strMotPasse new TextField strMotPasse setEchoCharacter Dans tous les cas il faut utiliser la m thode init et y indiquer Add strMotPasse Les m thodes utilisables Nom Action getText Retourne le texte contenu dans le champ setText texte par d faut Remplir le champ avec le texte indiqu setEditable false Indique que le champ ne peut pas tre modifi setEditable true Indique que l'on peut saisir dans ce champ isEditable Retourne une valeur true si champ modifiable ou false dans le cas de champ prot g en saisie Zones de texte Adresse Adresse C'est un composant dans lequel l'utilisateur peut saisir plusieurs lignes de texte Cr er une zone de texte de lignes sur caract res sans texte TextArea strAdresse new TextArea Cr er une zone de texte de taille ind termin e mais avec du texte TextArea strObservation new TextField ceci est une observation Dans tous les cas il faut utiliser la m thode init et y indiquer Add strMotPasse Les m thodes utilisables Nom Action getText Retourne le texte contenu dans la zone setText texte par d faut Remplir la zone avec le texte indiqu setEditable false Indique que la zone ne peut pas tre modifi e setEditable true Indique que l'on peut saisir dans cette zone isEditable Retourne une valeur true si champ modifiable ou false dans le cas de zone prot g e en saisie insert string int Ins re la cha ne de caract res partir de la position indiqu e par int replace string int int Remplace la cha ne de caract res partir de la position indiqu e par int jusqu' la position int Cases cocher CEE CEE Autre Autre France France Localisation Localisation Ce sont des cases repr sent es par des carr s que l'on peut cliquer ou d cliquer Quand on peut avoir plusieurs cases cocher on utilise des CheckBox Quand on veut avoir des cases dont une seule peut tre cliqu e on regroupe ces cases dans une CheckBoxGroup Cr er une case cocher sans texte CheckBox strChoix new CheckBox Cr er une case cocher avec texte CheckBox strChoix new CheckBox OK Cr er un groupe de cases cocher CheckBoxGroup civilit new CheckBoxGroup CheckBox strMonsieur new CheckBox Monsieur civilit true CheckBox str Madame new CheckBox Madame civilit false CheckBox strMlle new CheckBox Mademoiselle civilit false Ici on affiche trois cases avec la case Monsieur coch e Dans tous les cas il faut utiliser la m thode init et y indiquer Add strMonsieur Les m thodes utilisables Nom Action setState true Permet de cocher la case setState false Permet de d cocher la case getCurrent Permet de d terminer la case coch e setCurrent nomchkbox Permet de cocher une case pr cise Boutons OK OK Ce sont des zones cliquables qui permettent de d clencher des actions Cr er un bouton sans texte Button btnVide new Button Cr er un bouton avec texte Button btnOk new Button OK Dans tous les cas il faut utiliser la m thode init et y indiquer Add btnOk Nous verrons lors de la gestion des v nements comment utiliser les boutons Listes de choix Comment cr er une liste de choix Choice ColorChooser new Choice ColorChooser add Green ColorChooser add Red ColorChooser add Blue Les m thodes utilisables Nom Action getItem int Retourne le texte de l' l ment n int dans la liste countItem Retourne le nombre d' l ments de la liste getSelectedIndex Retourne le n d' l ment choisi dans la liste getSelectedItem i Retourne le texte de l' l ment choisi select int S lectionne le poste n int dans la liste select String S lectionne le poste ayant le texte correspondant la cha ne dans la liste Listes d filement List lstPlanete new List false cr e une liste avec l ments visibles mais seul choix possible false lstPlanete addElement Mercure lstPlanete addElement Venus lstPlanete addElement Terre lstPlanete addElement Mars lstPlanete addElement Jupiter lstPlanete addElement Saturne lstPlanete addElement Uranus lstPlanete addElement Neptune lstPlanete addElement Pluton cntContainer add lstPlanete Les m thodes utilisables Nom Action getSelectedIndexed Retourne une matrice de n d' l ments choisis dans la liste getSelectedItem i Retourne une matrice de cha nes de caract res correspondant aux l ments choisis Utiliser SWING L'ensemble des composants Swing ont tous pour d but de d nomination un J Ils se trouvent dans javax swing Nous disposons d'une fen tre principale que nous allons remplir avec des composants graphiques On distinguera Les conteneurs de haut niveau JFrame JWindow Applet JDialog Ainsi que des composants l gers JLabel JTextField JTextArea JButton JRadioButton JComboBox JCheckBox Jlist JScrollBar JprogressBar JtoolBar JOptionPane JScrollPane JSplitPane JTabbedPane Panel JSlider JToolTip JPasswordField Jtable JTree JColorChooser JMenu JMenuBar et entr es de menus JPopupMenu JEditorPane JTextPane JFileChooser JInternalFrame Quand vous d finissez un GUI Interface Graphique Utilisateur un certain nombre des composants sont d clencheurs d v nements Ces v nements seront tester si n cessaire pour d clencher des actions de contr le de mises jour de changement d interface Jusqu' maintenant nous faisions sans en avoir l'air de la programmation proc durale Nous allons ici entrer dans l' re de la programmation v nementielle Exemple de structure de programme Nous allons d tailler dans l'ordre les diff rents morceaux de code mettre bout bout pour cr er un programme une classe permettant l'affichage et la gestion d'un GUI Graphic User Interface c'est dire un ensemble de composants permettant l'utilisateur de saisir et d'interroger ses informations Les imports Dans les diff rentes m thodes qui constituent le programme nous aurons utiliser d'autres m thodes qui existent d j soient parce qu'elles sont dans les standards Java soient parce qu'elles ont t cr es et test es dans une autre classe par nos soins Ces m thodes appartiennent des classe elles m mes contenues dans des packages Pour les appeler il est possible d' crire comme nous l'avons d j fait System out println ce qui donne le chemin pour acc der la m thode qui se trouve dans la classe nomm e System Ecrire tous les noms de m thodes ainsi alourdirait la frappe du code et surtout sa lisibilit Pour n'indiquer que le nom de la m thode non pr c d par le chemin d'acc s nous indiquerons une fois pour toute les packages o se trouvent les classes nous int ressant en d but de code avant m me la d claration de la classe import javax swing import java awt Window import java awt event import java awt Puis crire la classe proprement dite y inclure les d clarations d objets qui auront une port e globale c'est dire connus et utilisables par l'ensemble des m thodes de la classe Nous d clarerons en particulier tous les composants constituant notre interface public class NomClasse extends JFrame D claration des objets et variables globales Jbutton btnExit int nMax extends JFrame permet l'h ritage par notre classe de toutes les m thodes et tous les attributs constituant la classe JFrame Nous sommes dans le cadre d une application donc description de la m thode main Nous y instancions un objet de la classe par un new entr e dans l'application public static void main String args new NomClasse La m thode main peut n' tre d crite que dans une seule classe appel e classe controler qui contr lerait la cin matique d'ex cution des autres classes Un exemple d'application que nous verrons dans le chapitre Construire une application avec SWING page fonctionne de cette mani re Il peut tre int ressant de mettre syst matiquement la m thode main pour pouvoir tester seulement la classe sans avoir passer par le lancement de la classe controler Puis nous inclurons la m thode constructeur de l'interface en public elle est lanc e par le main ou appel e par la classe controler m thode construction de NomClasse public NomClasse initGUI Tout de suite apr s la m thode initGui tester la sortie c'est dire la survenue d'un v nement clic sur la croix en haut droite de la fen tre de notre application WindowListener jecoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jecoute Nous verrons par la suite une autre fa on d' crire la sortie de l'application Description de la m thode initGui public void initGUI this getContentPane setLayout null permet de g rer les emplacements sans recourir des formats de pr sentations standards this setTitle Mon titre on indique le titre de la fen tre this setSize et la taille du container ici JFrame application des m thodes de mise en forme des composants l gers boutons labels tels Font couleurs bordures taille alignement raccourci clavier Ajouter des composants au container de fa on visible this setVisible true this getContentPane add ajouter les objet Listener concern s pour la gestion des v nements addActionListener new bEcoute Ne jamais omettre le setBounds des composants lorsqu'on a setLayout null sinon vos composants n'apparaissent pas sur votre interface Les v nements et les listeners Lorsqu'une application s'ex cute son comportement varie en fonction d'actions comme les clics de souris l'appui sur les touches l'ouverture et la fermeture des fen tres etc Cliquez moi Utilisateur Clic sur bouton Envoi v nement Bouton composant source Listener qui m ne l'action Cliquez moi Utilisateur Clic sur bouton Envoi v nement Bouton composant source Listener qui m ne l'action Exemple Un composant qui g n re des v nements est un composant source un composant qui r pond par des actions des occurrences d' v nements est un couteur ou auditeur ' in english listener c'est le gestionnaire des v nements Le gestionnaire d' v nement est un interface dont le nom qui se termine par Listener Il attend des v nements de type pr cis dont le nom se termine par Event Notre gestionnaire d' v nements poss de des m thodes telles que actionPerformed focusLost S'il a plusieurs m thodes il existe alors une classe Adapter qui nous permettra de ne traiter que la m thode souhait e Avant l'existence de cette classe il fallait red finir toutes les m thodes du gestionnaire d' v nements Les ensembles d' v nements standard sont Ev nements d'actions Le gestionnaire de l' v nement est ActionListener qui attend un ActionEvent M thode de ActionListener actionPerformed Ev nements d'ajustement Le gestionnaire de l' v nement est AdjustmentListener qui attend un AdjustmentEvent M thode de AdjustmentListener adjustmentValueChanged Ev nements de composants Le gestionnaire de l' v nement est ComponentListener qui attend unComponentEvent M thodes de ComponentListener componentHidden componentMoved componentResized componentShown Il existe un ComponentAdapter Ev nements de conteneurs Le gestionnaire de l' v nement est ContainerListener qui attend un ContainerEvent M thodes de ContainerListener componentAdded componentRemoved Il existe un ContainerAdapter Ev nements de focalisation Le gestionnaire de l' v nement est FocusListener qui attend un FocusEvent M thodes de FocusListener focusGained focusLost Il existe un FocusAdapter Ev nements d' l ments Le gestionnaire de l' v nement est ItemListener qui attend un ItemEvent M thodes de ItemListener ItemStateChanged Ev nements de touches Le gestionnaire de l' v nement est KeyListener qui attend un KeyEvent M thodes de KeyListener keyPressed keyReleased keyTyped Il existe un KeyAdapter Ev nements de la souris Le gestionnaire de l' v nement est MouseListener qui attend un MouseEvent M thodes de MouseListener MouseClicked mouseEntered mouseExited mousePressed mouseReleased Il existe un MouseAdapter Ev nements de mouvement de la souris Le gestionnaire de l' v nement est MouseMotionListener qui attend un MouseEvent M thodes de MouseMotionListener mouseDragged mouseMoved Il existe un MouseMotionAdapter Ev nements de texte Le gestionnaire de l' v nement est TextListener qui attend un TextEvent M thodes de TextListener textValueChanged Ev nements de fen tres Le gestionnaire de l' v nement est WindowListener M thodes de WindowListener windowClosed windowClosing windowDeiconified windowIconified windowOpened windowActivated windowDeactivated Il existe un WindowAdaptateur Il y a g n ralement au moins trois l ments de code impliqu s dans une gestion d' v nements Cr ation du composant source qui engendre l' v nement Cr ation d'un lien entre le composant source et le gestionnaire d' v nements par exemple addActionListener qui indique quel type d' v nements sera trait removeActionListener permet de d sunir le capteur et le composant btnOK addActionListener evtOk Code de la classe gestionnaire d' v nements Il existe deux fa ons de la programmer Adaptateur d'inner Classes anonymes Les avantages des inner classes sont les suivants Le code est g n r en ligne ce qui simplifie l'apparence du code Aucune classe s par e n'est g n r e L'inner classe peut acc der toutes les variables relevant de la port e dans laquelle elle est d clar e contrairement aux adaptateurs d' v nements standard qui disposent uniquement d'un acc s de niveau public et paquet Exemple utilisant les classes int gr es ou classes anonymes lorsque l utilisateur clique sur la croix pour fermer une fen tre il faut quitter la fen tre public NomClassn initGUI WindowListener jecoute new WindowAdapter constructeur public void windowClosing WindowEvent e System exit this addWindowListener jecoute ajout de l objet ainsi cr l interface Le code permettant de sortir de l'application est crit dans le corps de la classe permettant l'ex cution Adaptateurs d' v nements standard Le code permettant les traitements li s au d clenchement des v nements est sorti dans une classe ecite en fin de source Exemple la classe principale import java util public class PanelGauche extends JPanel JButton btnExit new JButton Sortie JButton btnCreat new JButton Ajout JButton btnChang new JButton Changement public void initGauche format et ajout des composants du GUI instanciation des composants this add btnExit this add btnCreat this add btnChang mise en place gestion des v nements Ecoute evtExit new Ecoute this evtExit nExit Ecoute evtCreat new Ecoute this evtCreat nCreat Ecoute evtChang new Ecoute this evtChang nChang btnExit addActionListener evtExit btnCreat addActionListener evtCreat btnChang addActionListener evtChang La classe de gestion des v nements dans notre cas s'appelle Ecoute elle a t invoqu e dans la classe principale car nous l'avons instanci e Elle est d crite ci-dessous avec ses attributs et ses m thodes class Ecoute implements ActionListener PanelGauche panelEcoute int nbtnClic final int nCreat constante de valeur final int nChang constante de valeur final int nExit constante de valeur constructeur public Ecoute PanelGauche panelOui int nBouton this panelEcoute panelOui this nbtnClic nBouton public void actionPerformed ActionEvent evt switch nbtnClic case nExit System exit break case nCreat strAction creat strIdent break case nChang strAction chang strIdent strParam getText break Comme pour AWT Swing met disposition un certain nombre de composants d j cr s JLabel Cr er un intitul JLabel strEtiq new JLabel Saisir un n de client On peut indiquer l'emplacement de l'intitul JLabel strEtiq new JLabel Choix Label CENTER au centre JLabel strEtiq new JLabel Choix Label RIGHT droite Il est possible de cr er un label vide que l'on remplira plus tard par setText JLabel strVide new Label Mettre un texte dans un intitul strVide setText Bonjour R cup rer le texte d'un intitul String strQuoi strVide getText JTextField Cr er un champ texte de caract res sans texte JTextField strDebut new JTextField Cr er un champ texte de caract res avec du texte JTextField strDebut new JTextField Les oiseaux chantent Cr er un champ texte de caract res avec du texte en utilisant un mod le JTextField strDebut new JTextField Document D ma valeur par defaut JPasswordField C'est un JTextField particulier car l'utilisateur ne voit pas les carct res qu'il entre au clavier JTextArea M mes possibilit s que TextArea vu sous AWT JButton Cr er un bouton sans texte JButton cmdVide new JButton Cr er un bouton avec texte JButton cmdOk new JButton OK Cr er un bouton avec ic ne JButton cmdtop new JButton images coucou gif Cr er un bouton avec ic ne et texte Button cmdOk new Button OK images coucou gif Exemple Le programme qui suit affiche un JFrame avec deux boutons Le premier contient un texte d placer la souris et une ic ne qui varie en fonction de la position de la souris sur l cran Le deuxi me est un bouton avec texte sortie qui lorsqu on le clique termine le programme comme la X en haut droite du JFrame Souris en dehors du premier bouton Souris sur le bouton Souris press e Exemple comment d'utilisation de JButton import javax swing import java awt Window import java awt event import java awt public class TestBouton extends JFrame Cr ation d'un objet JButton avec ic ne JButton cmdTest new JButton ImageIcon cmdDans new ImageIcon images Ag gif ImageIcon cmdHors new ImageIcon images Ag gif ImageIcon cmdPresse new ImageIcon images Ag gif Cr ation d'un bouton avec texte JButton cmdExit new JButton Sortie entr e dans l'application public static void main String args new TestBouton m thode construction de TestBouton public TestBouton initGUI WindowListener jecoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jecoute public void initGUI this getContentPane setLayout null permet de g rer les emplacements this setTitle Test de boutons titre de la fen tre this setSize taille fen tre largeur hauteur Cr ation des fontes sur le bouton et du texte apparaissant sur le bouton cmdTest setFont new Font Arial cmdTest setText D placez la souris D termination de l'ic ne image apparaissant quand la souris est en dehors du bouton cmdTest setIcon cmdHors image apparaissant quand la souris est sur le bouton cmdTest setRolloverIcon cmdDans image apparaissant quand on clique sur la souris cmdTest setPressedIcon cmdPresse D termination des bordures du bouton cmdTest setMargin new Insets Ne pas repr senter l' tat d'activation du bouton cmdTest setFocusPainted false Aligner le texte gauche cmdTest setHorizontalTextPosition SwingConstants LEFT D terminer un raccourci clavier pour le bouton cmdTest setMnemonic 'p' D terminer la taille du bouton cmdTest setBounds marge gauche marge haute largeur hauteur cmdExit setBounds Ajouter le bouton au frame de fa on visisble this setVisible true ajout du composant sur le ContentPane this getContentPane add cmdTest this getContentPane add cmdExit Ajout d'un couteur d' v nement sur le bouton de sortie cmdExit addActionListener new bEcoute G e s t i o n d e s v n e m e n t s c o m p o s a n t s class bEcoute implements ActionListener public void actionPerformed ActionEvent evt r cup ration du composant qui a envoy l' v nement Object srcAction evt getSource if srcAction cmdExit traitement du bouton de sortie System exit Nous avons vu ici une mani re de traiter les v nements Dans les exemples qui suivent nous utiliserons une autre m thode A vous de choisir Par contre nous avons vu appara tre la notion de ContentPane what is it Il faut se repr senter le GUI comme un mille feuille Premi re couche celle du dessous c'est le JFrame container de haut niveau Deuxi me couche juste au-dessus le ContentPane Couche suivante les composants Pourquoi ne pas directement poser les composants sur le JFrame Raisonnons par analogie peut- tre avez-vous eu une grand-m re qui vous confectionnait des g teaux pour vous go ter Rappelez-vous son moule tarte il tait en deux parties le tour et le fond qui tait amovible Le JFrame est le tour et le ContentPane est le fond Si vous d posiez la p te g teau sur le tour elle se retrouvait par terre De m me vous devez d poser les composants sur le ContentPane par un this getContentPane add cmdTest this repr sente dans notre exemple le JFrame JRadioButton Les boutons d'options ou boutons radio sont toujours plusieurs dans un m me groupe mais leur s lection est exclusive un seul bouton est coch Ils font partie d'un ButtonGroup non visible et non dimensionnable cr par ButtonGroup groupRad new ButtonGroup Les boutons sont cr s par JRadioButton radioCdi new JRadioButton Puis ils sont attach s au groupe de boutons par groupRad add radioCdi Les v nements possibles C est principalement le clic d un des boutons Mais cet v nement peut ne pas tre d clencheur d une action imm diate Exemple Sur une saisie de personne il y a un groupe de boutons radio pour cadre employ ouvrier C est lorsque l' v nement cliquer sur le bouton OK se produit que le bouton radio cliqu sera utilis getSelectedObjects permet de r cup rer le fait qu un bouton est cliqu L exemple programme qui suit permet de changer le texte d un label en fonction de l action cliquer sur un bouton radio La sortie du programme se fait par X Affichage initiale Clique sur Cdi Clique sur Cdd Clique int rim import javax swing import java awt event import java awt public class TestRadio extends JFrame JLabel lblResultat new JLabel Cochez-moi SwingConstants SOUTH EAST cr ation des boutons radio ButtonGroup groupRad new ButtonGroup JRadioButton radioCdi new JRadioButton JRadioButton radioCdd new JRadioButton JRadioButton radioInterim new JRadioButton Font font new Font Arial public static void main String args new TestRadio public TestRadio initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null this setTitle Test Bouton Radio titre de la fen tre this setSize taille de la fen tre this getContentPane setBackground Color lightGray fond de la fen tre this getContentPane add lblResultat ajout du label lblResultat setBounds taille du label Initialisation des trois RadioButtons radioCdi setText CDI radioCdi setActionCommand Ind termin radioCdi setBounds radioCdi setSelected true coch par d faut radioCdi addActionListener ajout d un couteur new ActionListener public void actionPerformed ActionEvent e contratCdi action mener si Cdi radioCdi setOpaque false radioCdd setText CDD radioCdd setActionCommand D termin radioCdd setBounds radioCdd addActionListener new ActionListener public void actionPerformed ActionEvent e contratCdd radioCdd setOpaque false radioInterim setText Interim radioInterim setActionCommand Interim radioInterim setBounds radioInterim addActionListener new ActionListener public void actionPerformed ActionEvent e contratInt radioInterim setOpaque false Ajouter les RadioButtons au ButtonGroup groupRad add radioCdi groupRad add radioCdd groupRad add radioInterim Ajouter les RadioButtons de l'objet JFrame this getContentPane add radioCdi this getContentPane add radioCdd this getContentPane add radioInterim this setVisible true public void contratCdi envoi texte CDI lblResultat setText merci de rester chez nous repaint Nouvel affichage du frame public void contratCdd envoi texte CDD lblResultat setText un petit bout de chemin ensemble repaint Nouvel affichage du frame public void contratInt envoi texte Interim lblResultat setText merci de passer chez nous repaint Nouvel affichage du frame JCheckBox Une JCheckBox est un bouton qui conna t deux tats coch ou pas coch Dans l exemple qui suit le fait de cocher faire appara tre la date am ne l affichage d un intitul suivi d un JTextfield avec la date en clair M me chose pour faire appara tre l heure import java awt import java awt event import javax swing import java util import java lang import java text import java util Locale import java sql Time import java sql Time public class TestCheckBox extends JFrame JCheckBox chkDate new JCheckBox JCheckBox chkHeure new JCheckBox JLabel lblDate new JLabel JLabel lblHeure new JLabel JTextField txtDate new JTextField JTextField txtHeure new JTextField public static void main String args new TestCheckBox public TestCheckBox initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null this setTitle Exemple CheckBox this setBounds new Rectangle Mise en forme ckkDate chkDate setBounds chkDate setText faire appara tre la date chkDate setActionCommand date chkDate addActionListener new ActionListener public void actionPerformed ActionEvent e String cmdCheckBox e getActionCommand if cmdCheckBox equals date true coch if lblDate isVisible false lblDate setVisible true txtDate setVisible true repaint else lblDate setVisible false txtDate setVisible false repaint Mise en forme ckkHeure chkHeure setBounds chkHeure setText faire appara tre l'heure chkHeure setActionCommand heure chkHeure addActionListener new ActionListener public void actionPerformed ActionEvent e String cmdCheckBox e getActionCommand if cmdCheckBox equals heure true coch if lblHeure isVisible false lblHeure setVisible true txtHeure setVisible true repaint else lblHeure setVisible false txtHeure setVisible false repaint Initialisation des l' tiquettes lblDate setBounds lblDate setText Nous sommes le lblDate setAlignmentY RIGHT ALIGNMENT lblDate setVisible false lblHeure setBounds lblHeure setText Au troisi me top il sera lblHeure setAlignmentX RIGHT ALIGNMENT lblHeure setVisible false txtDate setBounds txtDate setVisible false recup ration de la date DateFormat df DateFormat getDateInstance Date dateCourante new Date String strDate df format dateCourante txtDate setText strDate txtHeure setBounds txtHeure setVisible false r cup ration de l'heure Time heureCourante new Time System currentTimeMillis changeTime HeureCourante heureCourante Time valueOf heureCourante toString String strHeure heureCourante toString txtHeure setText strHeure this getContentPane add chkDate this getContentPane add chkHeure this getContentPane add lblDate this getContentPane add txtDate this getContentPane add lblHeure this getContentPane add txtHeure this setVisible true repaint JList Une JList est un composant contenant une s rie de valeurs parmi lesquelles l utilisateur peut choisir en double cliquant Exemple Affichage d une liste de pr noms avec un Jlabel qui est aliment par la s lection faite dans la liste import java awt import java awt event import javax swing public class TestList extends JFrame JScrollPane scrollAscenseur new JScrollPane JList listeNom new JList JLabel lblListe new JLabel public static void main String args new TestList public TestList initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null this setTitle Exemple JList this setBounds new Rectangle Taille de la zone de d filement scrollAscenseur setBounds new Rectangle Pr parer les donn es String strContenu Catherine Duc Emmanuelle Eric Florian Gr goire Jimmy Quang Rolando S bastien St phane Yu Alimenter la liste listeNom setListData strContenu Initialisation de l' tiquette lblListe setBounds lblListe setBackground new Color Classe de traitement d' v menent utilis e pour la liste listeNom addMouseListener new MouseAdapter public void mouseClicked MouseEvent e if e getClickCount apr s un double-clic String s lection String listeNom getSelectedValue lblListe setText s lection scrollAscenseur getViewport add listeNom this getContentPane add scrollAscenseur this getContentPane add lblListe this setVisible true Dans l exemple qui pr c de il n est pas possible de modifier le contenu de la liste Par contre par l ajout des ascenseurs il est possible de faire d filer la liste si elle d passe les possibilit s d affichage Prenons cette fois-ci l exemple d une liste dite dynamique c est dire que l utilisateur peut y ajouter des postes en supprimer voir modifier des postes existants Nous ne nous soucierons pas de l ordre de la liste Taper le nouveau nom dans le champ texte puis cliquer sur entr e Double cliquer sur un nom de la liste il appara t dans le champ texte puis cliquer sur effacer il dispara t de la liste Double cliquer sur un nom de la liste il appara t dans le champ texte puis modifier le texte et cliquer sur modifier il dispara t de la liste sous son ancienne orthographe et appara t dans cette m me liste avec sa nouvelle orthographe import java awt import java awt event import javax swing public class TestListDyn extends JFrame JScrollPane scrollAscenseur new JScrollPane JList listeNom new JList DefaultListModel listModel new DefaultListModel JLabel lblListe new JLabel JLabel lblSaisieListe new JLabel l ment concern JTextField txtNouveauPoste new JTextField JTextField txtAvant new JTextField pour stocker valeur avant modif JButton cmdAjout new JButton JButton cmdSuppr new JButton JButton cmdModif new JButton int index public static void main String args new TestListDyn public TestListDyn initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null this setTitle Exemple JList this setBounds new Rectangle Taille de la zone de d filement scrollAscenseur setBounds new Rectangle listeNom setModel listModel Pr parer les donn es String strContenu Catherine Duc Emmanuelle Eric Florian Gr goire Jimmy Quang Rolando S bastien St phane Yu Alimenter la liste for int i i strContenu length i listModel addElement strContenu i Initialisation de l' tiquette lblListe setBounds lblListe setBackground new Color Classe de traitement d' v menent utilis e pour la liste listeNom addMouseListener new MouseAdapter public void mouseClicked MouseEvent e if e getClickCount apr s un double-clic String selection String listeNom getSelectedValue index listeNom locationToIndex e getPoint txtNouveauPoste setText selection txtAvant setText selection permet de conserver la valeur avant modif lblSaisieListe setBounds txtNouveauPoste setBounds cmdAjout setText Ajouter cmdAjout setBackground new Color cmdAjout setBounds cmdAjout addActionListener new ActionListener public void actionPerformed ActionEvent e String strMiseAJour txtNouveauPoste getText if strMiseAJour length listModel addElement strMiseAJour ajout dans la liste txtNouveauPoste setText cmdSuppr setText Effacer cmdSuppr setBounds cmdSuppr setBackground new Color cmdSuppr addActionListener new ActionListener public void actionPerformed ActionEvent e String strMiseAJour txtNouveauPoste getText if strMiseAJour length listModel removeElement strMiseAJour suppression dans la liste txtNouveauPoste setText cmdModif setText Modifier cmdModif setBounds cmdModif setBackground new Color cmdModif addActionListener new ActionListener public void actionPerformed ActionEvent e String strMiseAJour txtNouveauPoste getText if strMiseAJour length listModel addElement strMiseAJour ajout dans la liste de l l ment saisi txtNouveauPoste setText strMiseAJour txtAvant getText if strMiseAJour length listModel removeElement strMiseAJour suppression dans liste de l l ment avant modif scrollAscenseur getViewport add listeNom this getContentPane add scrollAscenseur this getContentPane add lblSaisieListe this getContentPane add txtNouveauPoste this getContentPane add cmdAjout this getContentPane add cmdSuppr this getContentPane add cmdModif this setVisible true - - JToolTip Ce sont des fen tres d'aide qu'il est possible de faire appara tre quand la souris passe sur un composant l ger Exemple aide sur le bouton Ajouter cmdAjout setText Ajouter String strAideAjout taper un nouveau nom strAideAjout strAideAjout ci-dessus puis cliquer moi cmdAjout setToolTipText strAideAjout JComboBox Une JComboBox est une combinaison d une zone de texte et d une liste d roulante Il est possible d avoir une liste ferm e ou une liste o les saisies sont permises Exemple de programme avec JComboBox sans saisie possible Affichage d une JComboBox d un texte JLabel parmi les meilleurs CDMI et d un JTextField o est indiqu nous f licitons suivi du pr nom s lectionn dans la JComboBox En cliquant sur de la JComboBox apparition d une liste de pr noms En cliquant sur du bas de la liste d filement des pr noms suivants En cliquant sur un pr nom de la liste le message du JTextField change import javax swing import java awt event import java awt public class TestCombo extends JFrame JLabel lblFelicitation new JLabel Parmi les meilleurs CDMI JTextField txtFelicitation new JTextField cr ation de la comboBox JComboBox comboChoix new JComboBox public static void main String args new TestCombo public TestCombo initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null param trage du Jframe this setTitle Test Combo Box this setSize this getContentPane setBackground Color lightGray comboChoix setBounds taille des composants lblFelicitation setBounds txtFelicitation setBounds couteur d v nements sur combo comboChoix addActionListener new ActionListener public void actionPerformed ActionEvent e String strChoix String comboChoix getSelectedItem txtFelicitation setText nous f licitons strChoix repaint initCombo Ajouter les composants l'objet JFrame this getContentPane add lblFelicitation this getContentPane add txtFelicitation this getContentPane add comboChoix this setVisible true public void initCombo Alimentation de la comboBox String strContenu Catherine Duc Emmanuelle Eric Florian Gr goire Jimmy Quang Rolando S bastien St phane Yu for int i i strContenu length i comboChoix insertItemAt strContenu i i premier poste consid r comme s lectionn donc apparaissant dans texte de la Combo comboChoix setSelectedIndex Construire une application avec SWING Dans un premier temps nous allons cr er une classe qui ne contiendra que des constantes Nous l'appelons Constantes mais ce n'est qu'une convention Parmi les constantes nous trouverons Les informations li es aux drivers Les informations li es la charte graphique Toute valeur constante n cessaire l'application Exemple de classe Constantes Constantes diverses Auteur Nadine Date cr ation mars Date modification novembre public interface Constantes final String strDriverStatic sun jdbc odbc JdbcOdbcDriver final String strDriverDynamic com inet tds TdsDriver final String strTitreApplication Application d'exemples final int nHauteurBtn final int nLargeurBtn Pourquoi cr er une telle classe Au lieu de faire un setBound d'un bouton avec des valeurs en dur cmdTest setBounds marge gauche marge haute largeur hauteur nous indiquerons dans la m thode initGui cmdTest setBounds nHauteurBtn nLargeurBtn Avantage si vous changez de norme graphique et que la taille de vos boutons passe de sur sur vous n'avez pas intervenir sur tous les setBound de bouton mais simplement changer la valeur des constantes taille de bouton dans la classe Constantes et reg n rer l'application Puissant isn't it Autre pr liminaire la classe MesOutils Comme pour la classe Contantes le nom n'est qu'une convention vous pourriez la nommer autrement Nous y r pertorierons les quelques m thodes qui nous aident lors du d veloppement Exemple cr ation d'une m thode AffichMessage import javax swing public class MesOutils public static void AffichMessage String strMessage JOptionPane showConfirmDialog null strMessage trace mise au point JOptionPane OK OPTION JOptionPane INFORMATION MESSAGE Pourquoi cette m thode Dans certains cas nous n'aurez peut- tre pas de d boggueur ou un d boggueur peu pratique d'utilisation Vous pourrez appeler cette m thode pour afficher une boite de dialogue Qui vous indique que vous passez bien par une s quence d'instructions donn es MesOutils AfficheMessage je cr e l' v nement Qui vous permet de sortir les valeurs de certaines variables MesOutils AfficheMessage panel strAction Autres m thodes utiles la conversion d'un int en String public static String ConcertIntString int nEntier Integer intConv new Integer nEntier String strConvert intConv toString return strConvert la conversion d'un String en int public static int concertStringInt String strEntier Integer intConv new Integer strEntier Int nConv intConv intValue return nConv Exemple d'application Lorsque nous lan ons l'application il y a affichage d'un JFrame avec un composant PanneauGauche Si nous cliquons sur le bouton Ajout l'objet de la classe PanneauGauche met un v nement trait dans la classe Jframe qui provoquera l'affichage d'un objet PanneauDroit JFrame Voici le classe CtlGestion qui permet d'afficher et g rer la Jframe import java io import java awt import java awt event import javax swing event import javax swing public class CtlGestion extends JFrame JLabel lblParam new JLabel PanelDroit panel PanelGauche panel public static void main String args throws IOException new CtlGestion public CtlGestion initGUI WindowListener jecoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jecoute public void initGUI this getContentPane setLayout null pas de mise enpage automatique this setResizable false pas de changement de taille this setTitle Flip Flop de panneaux titre en haut de JFrame this setBounds new Rectangle taille du JFrame Initialisation de l' tiquette lblParam setBounds lblParam setText Cliquez sur les boutons pour les actions this getContentPane add lblParam this getContentPane setBackground Color cyan panel new PanelGauche WinEcoute panneauEcoute new WinEcoute this panel addPanneauListener panneauEcoute this getContentPane add panel this setVisible true public void affichePanel String strATraiter panel new PanelDroit this getContentPane add panel WinEcoute panneauEcoute new WinEcoute this panel addPanneauListener panneauEcoute this setVisible true repaint public void effacePanel this getContentPane remove panel panel setVisible false this setVisible true repaint G e s t i o n d e s v n e m e n t s c o m p o s a n t s class WinEcoute implements PanneauListener CtlGestion frmConteneur public WinEcoute CtlGestion frmEnCours this frmConteneur frmEnCours MesOutils AfficheMessage constructeur ecoute public void panneauAction PanneauEvent evt MesOutils AfficheMessage nom panneau evt getNom if evt getNom panel if evt getPanneauAction creat frmConteneur affichePanel if evt getNom panel MesOutils AfficheMessage d but paneau if evt getPanneauAction retour frmConteneur effacePanel Quelques explications compl mentaires s'imposent Les lignes permettent de d clarer des objets de port e globale l'application d crite En ligne nous instancions un objet panel de la classe PanneauGauche En ligne et nous instancions un auditeur PanneauEcoute que nous attachons l'objet panel Nous verrons juste apr s comment faire mettre des v nements par l'objet panel De la ligne nous trouvons une m thode d'affichage d'un objet de la classePanneauDroit Cette m thode re oit un param tre strATraiter De la ligne c'est une m thode d'effacement du panneau droit affich pr alablement Regardons maintenant la classe WinEcoute Nous d clarons un objet frmConteneur de classe CtlGestion Puis la m thode constructeur avec en param tre entrant le Jframe en cours La m thode panneauAction va traiter les v nements mis par les diff rents Jpanel Pour l'instant nous n'avons int gr que le traitement suite l'action clic sur le bouton cr ation du panneau gauche et sur le bouton retour du panneau droit Pour g n rer des venements depuis les panneaux gauche et droit il faut cr er deux composants une classe et une interface Voici tout d'abord la classe import java util d finition d'un nouvel objet v nement public class PanneauEvent extends EventObject protected String panneauSource protected String strAction protected String strIdent m thode constructeur PanneauEvent String objComposant String strA String strId super objComposant panneauSource objComposant strAction strA strIdent strId Autres m thodes public String getPanneauAction return strAction public String getPanneauIdent return strIdent public String getNom return panneauSource Puis l'interface import java util d finition d'un nouvel interface surveillant le nouvel v nement public interface PanneauListener extends EventListener m thode v nementdu panneau public void panneauAction PanneauEvent evt La classe PanneauEvent permet de d finir les v nements qui seront g n r s avec dans notre exemple trois attributs Le panneau qui met l' v nement L'action d clencher qui d pend du bouton sur lequel on clique L'identifiant sur lequel porte l'action Les m thodes get sont d finies pour chaque attribut Fonctionnellement une interface ressemble une classe abstraite dans laquelle il n'y a pas de code Une interface est une d claration de classe sp cialis e qui peut d clarer des constantes et des d clarations de m thodes sans code L'interface PanneauListener en est une illustration Jpanel Nous allons voir maintenant les classes PanneauDroit et PanneauGauche instanci es dans CtlGestion vu pr cedamment import java awt import java awt event import javax swing import javax swing border import java util public class PanelGauche extends JPanel private String strAction private String strIdent private Vector listenerList new Vector JTextArea strParam new JTextArea Cr ation d'un bouton avec texte JButton btnExit new JButton Sortie JButton btnCreat new JButton Ajout JButton btnChang new JButton Changement public static void main String args new PanelGauche public PanelGauche initGauche public void initGauche format et ajout des composants du GUI this setLayout null this setBounds new Rectangle Border border BorderFactory createTitledBorder Panneau gauche this setBorder border strParam setBounds strParam setBackground new Color btnExit setFont new Font Arial btnExit setBackground Color red btnExit setMargin new Insets btnExit setBounds btnCreat setFont new Font Arial btnCreat setBackground Color orange btnCreat setMargin new Insets btnCreat setBounds btnChang setFont new Font Arial btnChang setBackground Color green btnChang setMargin new Insets btnChang setBounds this add strParam this add btnExit this add btnCreat this add btnChang mise en place gestion des v nements EcouteGauche evtExit new EcouteGauche this evtExit nExit EcouteGauche evtCreat new EcouteGauche this evtCreat nCreat EcouteGauche evtChang new EcouteGauche this evtChang nChang btnExit addActionListener evtExit btnCreat addActionListener evtCreat btnChang addActionListener evtChang public synchronized void addPanneauListener PanneauListener panneauEcouteur listenerList addElement panneauEcouteur public synchronized void removePanneauListener PanneauListener panneauEcouteur listenerList removeElement panneauEcouteur protected void processPanneauAction MesOutils AfficheMessage je cr e l' v nement PanneauEvent evtPanneau new PanneauEvent panel strAction strIdent for int nEvt nEvt listenerList size nEvt PanneauListener listenerList elementAt nEvt panneauAction evtPanneau G e s t i o n d e s v n e m e n t s c o m p o s a n t s class EcouteGauche implements ActionListener PanelGauche panelEcoute int nbtnClic final int nCreat final int nChang final int nExit public EcouteGauche PanelGauche panelOui int nBouton this panelEcoute panelOui this nbtnClic nBouton public void actionPerformed ActionEvent evt switch nbtnClic case nExit System exit break case nCreat strAction creat strIdent panelEcoute processPanneauAction break case nChang strAction chang strIdent strParam getText break A partir de la ligne nous instancions un objet de la classe EcouteGauche avec deux param tres Le composant en cours Des valeurs constantes qui sont d finies dans la classe EcouteGauche Nous avons fix arbitrairement pour cr ation pour changement et pour sortie Puis nous attchons chaque bouton l' couteur l'auditeur qui lui correspondant En ligne vous trouverez la m thode qui permet d'ajouter la liste des couteurs notre couteur sp cifique En ligne la m thode qui permet l'action inverse En ligne la m thode processePanneauAction permet de g n rer un v nement et de l'ajouter la liste des v nements C'est cette m thode qui sera invoqu e ligne quand il a t d tect une action sur le bouton cr ation du panneau gauche pour g n rer un v nement qui sera r cu pr par un couteur auditeur de CtlGestion Voici une partie du code de la classe g rant le panneau droit import java awt import java awt event import javax swing border import javax swing import java util public class PanelDroit extends JPanel zones pour gestion d' v nements private String strAction private String strIdent private Vector listenerList new Vector Cr ation d'un bouton avec texte JLabel lblRecu new JLabel JButton btnAction new JButton Retour public PanelDroit initDroit public void initDroit Border border BorderFactory createTitledBorder Panneau droit this setBorder border this setLayout null this setBounds new Rectangle this setBackground Color lightGray Initialisation des composants pos s sur le Jpanel lblRecu setBounds btnAction setFont new Font Arial btnAction setBackground Color pink btnAction setMargin new Insets btnAction setBounds this add btnAction this add lblRecu EcouteDroit evtRetour new EcouteDroit this btnAction addActionListener evtRetour this setVisible true m thodes pour la gestion des v nements panneau public synchronized void addPanneauListener PanneauListener panneauEcouteur listenerList addElement panneauEcouteur public synchronized void removePanneauListener PanneauListener panneauEcouteur listenerList removeElement panneauEcouteur protected void processPanneauAction MesOutils AfficheMessage je cr e l' v nement PanneauEvent evtPanneau new PanneauEvent panel strAction strIdent for int nEvt nEvt listenerList size nEvt PanneauListener listenerList elementAt nEvt panneauAction evtPanneau G e s t i o n d e s v n e m e n t s c o m p o s a n t s class EcouteDroit implements ActionListener PanelDroit panelEcoute public EcouteDroit PanelDroit panelOui this panelEcoute panelOui public void actionPerformed ActionEvent evt r cup ration du composant qui a envoy l' v nement Object srcAction evt getSource if srcAction btnAction traitement du bouton action strAction retour strIdent panelEcoute processPanneauAction A titre d'exercice compl ter le code des deux derni res classes pour g rer les boutons non encore trait s JMenu JMenuBar et les entr es de menus En fin il nous faut cr er des menus facilitant l'acc s des utilisateurs aux diff rentes proc dures mises leur disposition Un exemple sera bien mieux qu'un grand discours Exemple affichage d'une barre de menus avec quatre menus ayant chacun des options accessibles ou pas Le code est le suivant import javax swing import java awt event import java awt Exemple de menu public class AirMenGen extends JFrame JMenuBar menuBarre new JMenuBar JMenu menuFichier new JMenu Fichier JMenu menuEdition new JMenu Edition JMenu menuSecurite new JMenu S curit JMenu menuOutils new JMenu Outils option du menu Fichier JMenuItem itemNouveau new JMenuItem Nouveau JMenuItem itemOuvrir new JMenuItem Ouvrir JMenuItem itemEnreg new JMenuItem Enregistrer JMenuItem itemCreer new JMenuItem Cr er option du menu Edition JMenuItem itemCouper new JMenuItem Couper JMenuItem itemCopier new JMenuItem Copier JMenuItem itemColler new JMenuItem Coller options du menu S curit JMenuItem itemSauve new JMenuItem Sauvergarder JMenuItem itemResto new JMenuItem Restaurer options du menu Outils JMenuItem itemPurge new JMenuItem Purge annuelle public static void main String args new AirMenGen constructeur de la fen tre pincipale public AirMenGen initGUI WindowListener jEcoute new WindowAdapter public void windowClosing WindowEvent e System exit this addWindowListener jEcoute public void initGUI this getContentPane setLayout null this setTitle Projet un p'tit air de Java this setBounds new Rectangle Normes largeur Normes hauteur this setBackground Normes couleurFond options du menu Fichier menuFichier add itemNouveau menuFichier add itemOuvrir menuFichier add itemEnreg menuFichier add itemCreer options du menu Edition menuEdition add itemCouper menuEdition add itemCopier menuEdition add itemColler options du menu S curit menuSecurite add itemSauve menuSecurite add itemResto options du menu Outils menuSecurite add itemPurge invalidation menu ou option menuSecurite setEnabled false itemResto setEnabled false ajout des couteurs d' v nements itemNouveau addActionListener new MenuActionAdapter this itemOuvrir addActionListener new MenuActionAdapter this itemEnreg addActionListener new MenuActionAdapter this itemCreer addActionListener new MenuActionAdapter this itemCouper addActionListener new MenuActionAdapter this itemCopier addActionListener new MenuActionAdapter this itemColler addActionListener new MenuActionAdapter this itemSauve addActionListener new MenuActionAdapter this itemResto addActionListener new MenuActionAdapter this itemPurge addActionListener new MenuActionAdapter this menuBarre add menuFichier menuBarre add menuEdition menuBarre add menuSecurite menuBarre add menuOutils this setJMenuBar menuBarre this setVisible true m thode traitement des actions sur les options de menus void menuTraitement ActionEvent evtclic String strDemande evtclic getActionCommand if strDemande equals Nouveau System out println Coucou Nouveau else if strDemande equals Ouvrir System out println Coucou Ouvrir else if strDemande equals Enregistrer System out println Coucou Enregistrer else if strDemande equals Cr er System out println Coucou Cr er else if strDemande equals Couper System out println Coucou Couper else if strDemande equals Copier System out println Coucou Copier else if strDemande equals Coller System out println Coucou Coller et la suite Classe pour mise en coute sur v nements class MenuActionAdapter implements ActionListener AirMenGen obj donn e de MenuActionAdapter MenuActionAdapter AirMenGen obj this obj obj public void actionPerformed ActionEvent e System out println coucou obj menuTraitement e Jwindow C'est un container c'est dire un composant de haut niveau Pour la partie traitement il est tr s voisin de Jframe sauf pour l'apparence qui n'est qu'une surface rectangulaire Pour sortir d'un Jwindow il est imp ratif de pr voir un bouton qui une fois cliqu permettra le System exit Japplet M mes possibilit s qu'avec la classe applet vu en d but de brochure Utiliser SWING suite JSlider Un JSlider est un composant avec graduations sur lequel se trouve un crseur qu'il est possible de d placer Les graduations sont de deux types des valeurs en clair des tirets entre deux valeurs Comme exemple nous vous proposons ce JFrame avec sliders un pour la couleur rouge le deuxi me pour la couleur verte le dernier pour la couleur bleue Pour chacun la graduation va de En faisant varier la position des diff rents curseurs nous obtenons un code RGB red green blue permettant de d terminer la couleur du fond du Jframe Cette valeur est affich e au fur et mesure des changements de positions des curseurs Un bouton Sortie permet de quitter l'application une boite de dialogue est afficher pour confirmation voir code page Un bouton Choix permet 'afficher un objet standard JColorChooser permettant le choix de couleur sur une grille de couleur import javax swing import javax swing event import java awt import java awt event public class JeuCouleur extends JFrame JSlider rougeSlider new JSlider JSlider vertSlider new JSlider JSlider bleuSlider new JSlider JPanel panelRouge new JPanel JPanel panelVert new JPanel JPanel panelBleu new JPanel JPanel panelBouton new JPanel JColorChooser colorChooser Color couleur JLabel lblRouge new JLabel JLabel lblVert new JLabel JLabel lblBleu new JLabel JLabel lblRgb new JLabel La valeur est JButton btnExit new JButton Sortie JButton btnChoix new JButton Choix Point d'entr e public static void main String args new JeuCouleur public JeuCouleur initGUI WindowListener Jecoute new WindowAdapter public void windowClosing WindowEvent evt sortieAppli this addWindowListener Jecoute public void initGUI this setTitle S lection couleur de fond this setSize this getContentPane setBackground new Color panelRouge setBounds panelRouge setLayout new BorderLayout panelVert setBounds panelVert setLayout new BorderLayout panelBleu setBounds panelBleu setLayout new BorderLayout panelBouton setBounds panelBleu setLayout new GridLayout JLabel lblRgb new JLabel La valeur est rougeSlider setOrientation JSlider HORIZONTAL vertSlider setOrientation JSlider HORIZONTAL bleuSlider setOrientation JSlider HORIZONTAL rougeSlider setMaximum vertSlider setMaximum bleuSlider setMaximum valeur de d part sur les diff rents sliders rougeSlider setValue vertSlider setValue bleuSlider setValue est la valeur s parant les chiffres rougeSlider setMajorTickSpacing vertSlider setMajorTickSpacing bleuSlider setMajorTickSpacing est la valeur s parant les tirets rougeSlider setMinorTickSpacing vertSlider setMinorTickSpacing bleuSlider setMinorTickSpacing d finir l' tiquette et les tirets rougeSlider setPaintTicks true vertSlider setPaintTicks true bleuSlider setPaintTicks true rougeSlider setPaintLabels true vertSlider setPaintLabels true bleuSlider setPaintLabels true liaison entre tirets et la position du slider rougeSlider setSnapToTicks true vertSlider setSnapToTicks true bleuSlider setSnapToTicks true rougeSlider setPreferredSize new Dimension bleuSlider setPreferredSize new Dimension vertSlider setPreferredSize new Dimension rougeSlider setBackground Color red vertSlider setBackground Color green bleuSlider setBackground Color blue rougeSlider addChangeListener new SliderEcoute this vertSlider addChangeListener new SliderEcoute this bleuSlider addChangeListener new SliderEcoute this lblRgb setBounds lblRouge setBounds lblVert setBounds lblBleu setBounds btnExit setBounds btnChoix setBounds btnExit addActionListener new BoutonEcoute this btnChoix addActionListener new BoutonEcoute this this getContentPane setLayout null panelRouge add rougeSlider panelVert add vertSlider panelBleu add bleuSlider panelBouton add lblRgb panelBouton add lblRouge panelBouton add lblVert panelBouton add lblBleu panelBouton add btnExit panelBouton add btnChoix this getContentPane add panelRouge this getContentPane add panelVert this getContentPane add panelBleu this getContentPane add panelBouton this setVisible true si choix via slider public void majCouleur int nRouge rougeSlider getValue int nVert vertSlider getValue int nBleu bleuSlider getValue conversion int en String Integer int new Integer nRouge Integer int new Integer nVert Integer int new Integer nBleu lblRouge setText int toString lblVert setText int toString lblBleu setText int toString this getContentPane setBackground new Color nRouge nVert nBleu si choix pour colorChooser public void nouvelleCouleur couleur JColorChooser showDialog this Couleur de fond couleur this getContentPane setBackground couleur public void sortieAppli DialogConfirm dial new DialogConfirm this Kenavo false dial setVisible true public void fermeture System exit auditeur d' v nements sur les sliders class SliderEcoute implements ChangeListener JeuCouleur obj public SliderEcoute JeuCouleur obj this obj obj public void stateChanged ChangeEvent e obj majCouleur auditeur d' v nements sur les boutons class BoutonEcoute implements ActionListener JeuCouleur JC int nBouton public BoutonEcoute JeuCouleur obj int nBtn r cup ration du conteneur et du bouton qui a envoy l' v nement this JC obj this nBouton nBtn public void actionPerformed ActionEvent evt if nBouton JC sortieAppli traitement du bouton de sortie if nBouton JC nouvelleCouleur traitement du bouton de choix Exemple avec JColorChooser Jdialog Un JDialog permet d'afficher une fen tre avec question r ponse sur la fen tre d'application Jframe Exemple boite de dialogue affich e lors de la sortie de l'application pr c dante import java awt event import javax swing public class DialogConfirm extends JDialog JeuCouleur JeuCouleur JLabel lblD butPhrase new JLabel Voulez-vous vraiment SwingConstants CENTER JLabel lblFinPhrase new JLabel quitter cette application SwingConstants CENTER JButton btnOui new JButton Oui JButton btnNon new JButton Non public DialogConfirm JeuCouleur JeuCouleur String titre boolean modal super JeuCouleur titre modal this JeuCouleur JeuCouleur initGUI void initGUI setBounds getContentPane setLayout null lblD butPhrase setBounds lblFinPhrase setBounds btnOui setBounds btnOui addActionListener new DialogAction this btnNon setBounds btnNon addActionListener new DialogAction this getContentPane add lblD butPhrase getContentPane add lblFinPhrase getContentPane add btnOui getContentPane add btnNon Traitement d' v nements pour les deux boutons public void ClicBouton ActionEvent e String cmd e getActionCommand if Oui equals cmd JeuCouleur fermeture Appeler la m thode du frame else dispose Ne fermer que la bo te de dialogue Classe d'initialisation pour les deux class DialogAction implements ActionListener DialogConfirm obj public DialogAction DialogConfirm obj this obj obj public void actionPerformed ActionEvent e obj ClicBouton e JTabbedPane Ce composant permet d'afficher plusieurs panneaux qu'il est possible d'atteindre par les onglets situ s en haut juste sous la barre du JFrame L'exemple source qui suit utilise ce composant avec JPanel JPopupMenu Sur le premier JPanel un composant JPopupMenu appara t lorsque nous agissons sur la souris par clic droit Cet v nement est trait dans le source qui suit Il permet l'apparition show d'une fen tre menu l'endroit o le clic a t fait voir commentaires dans le source JToolBar Le deuxi me JPanel affiche une barre d'outils JProgressBar Le troisi me JPanel afiiche une barre de progression partir du nombre de clic faits sur le bouton Cliquer La gestion de l' v nement est faite dans le source qui suit JTable Le dernier Jpanel affiche des renseignements sous forme d'un tableau deux dimensions Les l ments mettre en uvre sont illustr s dans le source qui suit Un objet JScrollPane est galement mis en uvre import javax swing import javax swing table import java awt import java awt event public class Onglet extends JFrame JTabbedPane paneAonglet new JTabbedPane JPanel panel new JPanel JPanel panel new JPanel JPanel panel new JPanel JPanel panel new JPanel ImageIcon imgExit new ImageIcon d Java images AG gif imgExit ImageIcon imgCalcul new ImageIcon d Java images AG gif imgCalcul ImageIcon imgTel new ImageIcon d Java images AG GIF imgTel ImageIcon imgHeure new ImageIcon d Java images Ag gif imgHeure ImageIcon imgLoupe new ImageIcon d Java images BS A GIF imgLoupe composants du panel JPopupMenu menuVolant new JPopupMenu Oeuvres diverses JMenuItem item new JMenuItem Test Slider JMenuItem item new JMenuItem Test Split JMenuItem item new JMenuItem Test Structure JMenu item new JMenu Divers JMenuItem item new JMenuItem Pendu JMenuItem item new JMenuItem Ours composants du panel JTable tblIllust final Object enteteCol D signation Image Type utilisation final Object ligneTable Porte imgExit Sortie Calculette imgCalcul Calculs T l phone imgTel annuaire t l phonique Horloge imgHeure Horaires Loupe imgLoupe Agrandissement composants et variable du panel JToolBar barOutils new JToolBar JButton btnExit new JButton JButton btnCalcul new JButton JButton btnTel new JButton JButton btnHeure new JButton JButton btnLoupe new JButton composants et variable du panel JLabel lblPanel new JLabel JButton btnPanel new JButton int nFois JProgressBar progressBar new JProgressBar JLabel progressLabel new JLabel public static void main String args new Onglet public Onglet initGUI public void initGUI this setTitle Dernier exemple this setSize this addMouseListener new Mecoute this initialisation PopupMenu sur panel panel setLayout null menuVolant add item menuVolant add item menuVolant add item menuVolant addSeparator menuVolant add item item add item item add item item addActionListener new Mecoute this item addActionListener new Mecoute this item addActionListener new Mecoute this item addActionListener new Mecoute this item addActionListener new Mecoute this panel add menuVolant null panel addMouseListener new Mecoute this initialisation du panel avec une table TableModel dataModel new AbstractTableModel public int getColumnCount return enteteCol length public int getRowCount return ligneTable length public Object getValueAt int nLigne int nColonne return ligneTable nLigne nColonne public String getColumnName int colonne return String enteteCol colonne public Class getColumnClass int cl return getValueAt cl getClass tblIllust new JTable dataModel JScrollPane ascenseur new JScrollPane tblIllust Cr ation d'un objet CellRenderer DefaultTableCellRenderer misenFormeCellule new DefaultTableCellRenderer Orientation du texte pour l'objet Render misenFormeCellule setHorizontalAlignment SwingConstants CENTER int nLargColonne imgExit getIconWidth TableColumn colonne tblIllust getColumn Image TableColumn nLargColonne colonne setPreferredWidth nLargColonne d termine largeur cellule int nHautLigne imgExit getIconHeight d termine hauteur cellule tblIllust setRowHeight nHautLigne panel add ascenseur initialisation du panel avec sa ToolBar panel setLayout new BorderLayout JToolBar barOutils new JToolBar btnExit setIcon imgExit btnCalcul setIcon imgCalcul btnTel setIcon imgTel btnHeure setIcon imgHeure btnLoupe setIcon imgLoupe btnExit setToolTipText c'est l'heure de la sortie btnCalcul setToolTipText les bons comptes font les bons amis btnHeure setToolTipText avant l'heure c'est pas l'heure btnTel setToolTipText T l phone btnLoupe setToolTipText que vois-je barOutils add btnLoupe ajout des boutons la barre barOutils add btnHeure dans l'ordre d'apparition barOutils add btnTel barOutils add btnCalcul barOutils addSeparator new Dimension btnLoupe HEIGHT barOutils add btnExit panel add barOutils null initialisation du panel avec sa progressBar panel setLayout null progressBar setMaximum valeur maxi de la barre progressBar setForeground Color cyan progressBar setBounds progressBar setStringPainted true pour afficher le progressLabel setText Progression en progressLabel setBounds new Rectangle lblPanel setText Cliquer pour progresser lblPanel setBounds btnPanel setText Cliquer btnPanel setBounds btnPanel addActionListener new Mecoute this panel add progressBar null panel add progressLabel null panel add lblPanel null panel add btnPanel null Ajouter les objets JTabbedPane aux objets JPanel paneAonglet addTab Popup Menu panel paneAonglet addTab JTable panel paneAonglet addTab JToolBar panel paneAonglet addTab JProgressBar panel this getContentPane add paneAonglet BorderLayout CENTER this setVisible true Fermeture du programme protected void processWindowEvent WindowEvent e super processWindowEvent e if e getID WindowEvent WINDOW CLOSING System exit action souris void actionMulot MouseEvent e if e getModifiers MouseEvent BUTTON MASK affichage du menu l'endroit de l' v nement e menuVolant show e getComponent e getX e getY action bouton void actionPanel Object objSource if objSource btnPanel nFois nFois if nFois progressBar setValue nFois else lblPanel setText You win nFois class Mecoute extends MouseAdapter implements ActionListener Onglet obj Mecoute Onglet obj this obj obj public void mouseClicked MouseEvent e obj actionMulot e public void actionPerformed ActionEvent e Object sourceAction e getSource obj actionPanel sourceAction JTree Ce type de composant est illustr par les arborescences obtenues lorsque vous utiliser l'explorateur Windows Vous avez une racine et son premier niveau de d composition En cliquant sur un n ud il est possible de e d plier c'est dire d'en conna tre son contenu et ainsi de suite JSplitPane Un SplitPane permet de s parer un container en deux parties la fronti re entre ces deux parties pouvant tre chang e par l'utilisateur l'aide de la souris en s lectionnant la barre de s paration et en la faisant glisser Dans l'exemple qui suit nous avons mis en uvre les deux types d'objets JPanel panneauDroitHaut JPanel panneauDroitHaut - JTree arbreGauche JTree arbreGauche JSplitPane ligneVertical JSplitPane ligneVertical JSplitPane ligneHorizontal JSplitPane ligneHorizontal JPanel panneauDroitBas JPanel panneauDroitBas import java awt import java awt event import javax swing import javax swing event import javax swing tree public class CtlPane extends JFrame JTree arbre new JTree JScrollPane arbreGauche new JScrollPane JPanel panneauDroitHaut new JPanel JPanel panneauDroitBas new JPanel JSplitPane ligneHorizontal new JSplitPane JSplitPane ligneVertical new JSplitPane JLabel txtMessage new JLabel JLabel txtBig new JLabel public static void main String args new CtlPane public CtlPane initGUI private void initGUI this getContentPane setLayout null this setTitle Exemple arbre split this setBackground Color magenta arbreGauche setBackground Color red panneauDroitHaut setBackground Color yellow panneauDroitBas setBackground Color cyan panneauDroitHaut setBounds panneauDroitBas setBounds txtMessage setFont new Font CASTELLAR txtMessage setForeground Color orange txtBig setFont new Font CASTELLAR txtBig setForeground Color black panneauDroitHaut add txtMessage panneauDroitBas add txtBig Positionner le Jframe au centre de l' cran quelque soit sa taille int nLargeur int nHauteur Dimension TailleEcran Toolkit getDefaultToolkit getScreenSize int nLargEcran TailleEcran width int nHautEcran TailleEcran height int nX int nLargEcran - nLargeur int nY int nHautEcran - nHauteur this setSize nLargeur nHauteur this setLocation nX nY mise en place de l'arbre sur le panneau gauche arbreGauche setBounds new Rectangle mise en place de la racine DefaultMutableTreeNode formations new DefaultMutableTreeNode Formations Nanterre DefaultTreeModel arbreModele new DefaultTreeModel formations DefaultMutableTreeNode cdmi new DefaultMutableTreeNode C D M I arbreModele insertNodeInto cdmi formations DefaultMutableTreeNode projet new DefaultMutableTreeNode M diaOne DefaultMutableTreeNode projet new DefaultMutableTreeNode P'tit Air de Java DefaultMutableTreeNode projet new DefaultMutableTreeNode Jakarta cdmi add projet cdmi add projet cdmi add projet DefaultMutableTreeNode projet a new DefaultMutableTreeNode Bureautique DefaultMutableTreeNode projet b new DefaultMutableTreeNode Initiation r seau DefaultMutableTreeNode projet c new DefaultMutableTreeNode Merise Donn es DefaultMutableTreeNode projet d new DefaultMutableTreeNode Initiation C S DefaultMutableTreeNode projet e new DefaultMutableTreeNode Langage SQL projet add projet a projet add projet b projet add projet c projet add projet d projet add projet e DefaultMutableTreeNode projet a new DefaultMutableTreeNode Algorythmique DefaultMutableTreeNode projet b new DefaultMutableTreeNode Langage Java DefaultMutableTreeNode projet c new DefaultMutableTreeNode Gestion Entreprise projet add projet a projet add projet b projet add projet c ajout deuxi me branche DefaultMutableTreeNode indiv new DefaultMutableTreeNode Parcours individualis formations add indiv ajout des noeuds de niveau inf rieur sur deuxi me branche DefaultMutableTreeNode indiv new DefaultMutableTreeNode HTML DefaultMutableTreeNode indiv new DefaultMutableTreeNode JavaScript DefaultMutableTreeNode indiv new DefaultMutableTreeNode ASP indiv add indiv indiv add indiv indiv add indiv d terminer le mod le utiliser pour le composant JTree arbre setModel arbreModele Cr ation et ajout de SelectionListener arbre addTreeSelectionListener new TEcoute this arbreGauche getViewport add arbre null mise en place des barres de fractionnement sur panneaux droits ligneVertical setBounds ligneVertical setBackground Color orange ligneVertical setOrientation JSplitPane HORIZONTAL SPLIT ligneVertical setLeftComponent arbreGauche ligneVertical setRightComponent ligneHorizontal ligneVertical setDividerSize ligneVertical setDividerLocation ligneHorizontal setOrientation JSplitPane VERTICAL SPLIT ligneHorizontal setTopComponent panneauDroitHaut ligneHorizontal setBottomComponent panneauDroitBas ligneHorizontal setDividerSize ligneHorizontal setDividerLocation this getContentPane add ligneVertical this setVisible true Permettre la fermeture du programme protected void processWindowEvent WindowEvent e super processWindowEvent e if e getID WindowEvent WINDOW CLOSING System exit Gestion des v nements pour les composants de l'arbre public void treeEvent TreeSelectionEvent e DefaultMutableTreeNode node DefaultMutableTreeNode e getPath getLastPathComponent String strChoix node toString if node isLeaf Pour les noeuds terminaux if Bureautique equals strChoix txtMessage setText Dur Dur la bureautique else if Initiation r seau equals strChoix txtMessage setText Dur Dur les collisions else if Merise Donn es equals strChoix txtMessage setText EX CD par MCD else if Initiation C S equals strChoix txtMessage setText et pour Monsieur ce sera else if Langage SQL equals strChoix txtMessage setText SSSSS QQQQQQQ LLLLLL else txtMessage setText Coul else txtMessage setText Redessiner chaque fois txtBig setText strChoix txtMessage repaint txtBig repaint Classe d'initialisation des composants JTree class TEcoute implements TreeSelectionListener CtlPane obj public TEcoute CtlPane obj this obj obj public void valueChanged TreeSelectionEvent e obj treeEvent e Traitement des exceptions G n ralit s Nous sommes tous confront s en utilisant un micro des erreurs li es au mat riel ou aux logiciels qui provoquent une sortie intempestive du logiciel voir nous obligent rebooter apr s nous avoir lancer des injures souvent dures interpr ter Pour viter ses d bordements nous disposons de plusieurs atouts Effectuer tous les tests souhaitables lors d'entr es d'informations dans l'application via saisie cran ou transfert d'informations Si nous d tectons une anomalie il est de bon ton d'envoyer un message clair l' metteur et de lui donner la possibilit de corriger Parfois l'erreur n'est pas li e une erreur d'entr e d'informations mais un r sultat non conforme notre attente Acc s un objet inexistant Division par z ro Indice en dehors de ses limites En Java de telles erreurs sont appel es exceptions Nous avons donc un certain nombre de classes d'exception Lorsqu'un incident survient une erreur est g n r e ce qui revient dire qu'une instance de la classe Throwable est cr e Deux sous classes h ritent de la classe Throwable la classe Error et la classe Exception Si l'erreur provoque la g n ration d'une instance de la classe Error cela veut dire que la machine virtuelle Java qui est en cause Cela est rare mais aucune intervention n'est possible de notre part Par contre si l'erreur provoque la g n ration d'une instance de la classe Exception c'est le programme qui est en cause et c'est donc nous de jouer pour attraper l'erreur au bond l'aide de try et de mener l'action de correction message d'erreur clair ou traitement de s curisation ad quat l'aide de catch Ou d'utiliser throws en d but de m thode Try et catch Instructions non surveill es try s quences d'instructions surveiller catch type d'exception trait e s quences d'instructions traitement de l'erreur Dans la s quence d'instructions surveiller nous avons souvent plusieurs instructions certaines ne g n rant jamais d'erreur d'autres en g n rant Il faut donc prendre instruction par instruction et d finir les types d'exception li s chaque instructions Il existe une hi rarchie dans les classes d'exception dont voici un aper u non exhaustif Exception ---------- ClassNotFoundException ---------- IllegalAcessException ---------- InstantiationException ---------- InterruptedException ---------- NoSuchFieldException ---------- NoSuchMethodException ---------- RunTimeException --------- ArithmeticException --------- ArrayStoreException --------- ClassCastException --------- IllegalArgumentException --------- IllegalThreadException -------- NumerFormatException ---------- IllegalMonitorStateException ---------- IllegalStateException --------- IndexOutBoundsException ---- ArrayIndexOutOfBoundsException --- ArrayIndexOutOfBoundsException --------- NegativeArraySizeException --------- NullPointerException --------- S curityException -------- UnsupportedOperationException --------- SQLException Il est possible de tester les diff rentes exceptions il faut simplement partir du niveau le plus fin pour remonter au niveau le plus haut Instructions non surveill es try s quences d'instructions surveiller catch FileNotFoundException e s quences d'instructions traitement de l'erreur fichier non trouv catch IOException e s quences d'instructions traitement de l'erreur sur entr es sorties

Related Downloads
Explore
Post your homework questions and get free online help from our incredible volunteers
  874 People Browsing
Your Opinion
Which of the following is the best resource to supplement your studies:
Votes: 384

Previous poll results: Who's your favorite biologist?