Cours Java
Cours Java
Abdellah EZZATI
Introduction & Historique
→ Java trouve ses origines dans les années 1990. Les premières
versions se java datent 1995.
JAVA 3
Introduction & Historique
→ En Java, tout se trouve dans une classe. Il ne peut y avoir de
déclarations ou de code en dehors du corps d'une classe.
→ La classe elle même ne contient pas directement du code.
Elle contient des déclarations de variables globales, que l'on
appelle des «attributs» et des méthodes.
→ Le code se trouve exclusivement dans le corps des méthodes,
mais ces dernières peuvent aussi contenir des déclarations de
variables locales (visibles uniquement dans le corps de la
méthode).
→ Java développe deux genres de programmes :
• Les applications (programmes ou logiciels classiques).
• Les applets qui sont des programmes java insérés dans un
document HTML.
JAVA 4
Introduction & Historique
→ JRE: Java Runtime Environement. Désigne la machine
virtuelle et l'ensemble des outils nécessaires pour exécuter
une application Java sur votr machine.
→ JDK: Java Development Kit. Ancien terme SDK.
→ SDK: Standard Development Kit➔L’ensemble d’outils
nécessaires au développeur Java. Celui-ci contient:
➔JRE
➔Les bibliothèques de développement
➔Le compilateur
→ IDE:
➔Eclipse ➔ Netbeans
➔Jbuilder ➔ IntelliJ
JAVA 5
Mon premier programme en Java
Soit le programme suivant qui affiche à l’écran :
Bonjour c’est mon premier programme en Java
JAVA 6
Mon premier programme en Java
→Un programme autonome destiné à être exécuté doit contenir
une méthode particulière nommée main() définie de la
manière suivante:
public static void main(String args[]) {
/* corps de la méthode main */
}
→Le paramètre args de la méthode main() est un tableau
d’objets de type String. Il n’est pas utilisé mais, il est exigé
par le compilateur Java.
→La classe contenant la méthode main() doit obligatoirement
être public afin que la machine virtuelle y accès. Notre
premier exemple TP1 est réduit à la définition d’une
méthode main().
JAVA 7
Mon premier programme en Java
→Un fichier source peut contenir plusieurs classes mais une
seule doit être public (Dans notre premier programme par
exemple TP1 est public).
JAVA 8
Compilation & Exécution
La compilation d’un programme Java ne traduit pas
directement le code source en fichier exécutable. Elle traduit
d’abord le code source en un code intermédiaire appelé «
bytecode ». C’est le bytecode qui sera ensuite exécuté par
une machine virtuelle (JVM ; Java Virtual Machine). Ceci
permet de rendre le code indépendant de la machine qui va
exécuter le programme.
JAVA 9
Java : Eléments de bases
→ Les identificateurs commencent par une lettre ou par _
→ Les mots-clés et les signes (-, +, @, …) sont interdit dans les
identificateurs que soit des attributs ou des méthodes.
→ Un identificateur ne commence jamais avec un chiffre.
→ Java distingue entre minuscules et majuscules
→ Les instructions terminent par un point-virgule ;
→ Les blocs sont délimités par un couple d'accolades {...}
→ Les caractères // définissent un commentaire s’étend
jusqu’au de fin de ligne.
→ /* commentaires sur plusieurs lignes */
JAVA 10
Identificateurs et mots réservés
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
JAVA 11
Eléments de bases : types entiers
JAVA 12
Types entiers : Exemple
JAVA 13
Eléments de bases : types réels
JAVA 14
Types réels : Exemple
JAVA 15
Eléments de bases : types caractère
Notation Code Abréviation usuelle Signification
Unicode
\b 0008 BS(BackSpace) Retour arrière
\t 0009 HT(Horizontal Tabulation) Tabulation horizontale
\n 000a LF(LineFeed) Saut de ligne
\f 000c FF(FormFeed) Saut de page
\r 000d CR(CariageReturn) Retour chariot
\’’ 0022
\’ 0027
\\ 005c
JAVA 16
Types caractères: Exemple
JAVA 17
Constante et mot clé final
Java permet de déclarer des variables et des expression dont la
valeur est inchangeable en utilisant le mot clé final.
JAVA 18
Lecture au clavier
L’affichage (Java) ne pose pas de problème on peut toujours
utiliser des instructions telleques :
System.out.println(" valeur = " + a+b); //Concaténation
Ou bien:
System.out.print(" valeur = " + (a+b)); //Calcul
Mais pour la lecture java ne prévoit rien. Mais, il existe deux
solutions (voir www.editions-eyrolles.com) :
➔Clavier.java
➔ Scanner
JAVA 19
Clavier.java
import java.io.* ;
public class Clavier
{ public static String lireString () // lecture d’une chaine
{ String ligne_lue = null ;
try{InputStreamReader lecteur = new InputStreamReader(System.in);
BufferedReader entree = new BufferedReader (lecteur) ;
ligne_lue = entree.readLine() ; }
catch (IOException err)
{ System.exit(0) ; } return ligne_lue ; }
public static float lireFloat () // lecture d’un float
{ float x=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
x = Float.parseFloat(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return x ;
}
JAVA 20
Clavier.java (suite)
public static double lireDouble () // lecture d’un double
{ double x=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
x = Double.parseDouble(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return x ; }
public static int lireInt () // lecture d’un int
{ int n=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
n = Integer.parseInt(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return n ; }
}
JAVA 21
Exemple de lecture (Clavier)
JAVA 22
JAVA 23
Exemple de lecture (Scanner)
JAVA 24
Les opérateurs arithmétiques
symbole description Nombre exemple
d’opérandes
– soustraction 2 a–b
+ addition 2 a+ b
* multiplication 2 a*b
/ div ision 2 a /b
% modulo 2 a%b
Opérateur Signification
< Inférieur à
> Supérieur à
>= Supérieur ou égale à
== Égal à
!= différent
JAVA 27
Les opérateurs logiques
Opérateur Signification
! Négation
& Et
^ ou exclusif
| Ou inclusif
&& Et avec court circuit
JAVA 28
Les opérateurs d’incrémentation / décrémentation
JAVA 29
Les opérateurs d’affectation élargie
JAVA 30
Instructions de contrôle
Instruction if
Syntaxe:
if (condition)
bloc_instruction1
else
bloc_instruction2
JAVA 31
Instructions de contrôle
instruction switch
Syntaxe:
switch(expression)
{case constante1 : bloc d’instructions1; break;
case constante2 : bloc d’instructions2; break;
………………………… ………
case constanteN : bloc d’instructionsN; break;
default: bloc d’instructions;
}
JAVA 32
Instructions de contrôle
instruction for
Syntaxe:
for(initialisation; condition; incrémentation)
{ bloc d’instructions;}
Exemple:
for(i=1;i<=3;i++)
system.out.println(i+’’, ’’);
Résultat: 1, 2, 3,
JAVA 33
Instructions de contrôle
instruction while
Syntaxe:
while (condition)
{ bloc d’instructions; }
Exemple
i=1;
while(i<=3)
{ system.out.println(i+’’, ’’);
i++; }
Résultat: 1, 2, 3,
JAVA 34
Instructions de contrôle
instruction do … while
Syntaxe:
do { bloc d’ instructions; } while (condition);
Exemple
i=1;
do
{system.out.println(i+’’, ’’);
i++;
} while(i<=3);
Résultat: 1, 2, 3,
JAVA 35
Exercice
JAVA 36
Instruction de branchement inconditionnel
Dans une boucle ( while, do…while, for) break sert à interrompre
l’exécution de cette boucle.
JAVA 37
Instruction de branchement inconditionnel
L’instruction continue permet de sauter des instructions en
changeant directement le conteur de la boucle.
JAVA 38
Notion de Classe & d’Objet
JAVA 39
JAVA 40
Attributs →Variable global de la classe
→Accessible depuis toutes les méthodes de la classe
Méthode → Les méthodes ne peuvent être créer que comme des
composante d’une classe.
→ Une méthode ne peut être appelée que pour un objet.
→ L’appel d’une méthode pour un objet se réalise en
nommant l’objet suivi d’un point suivi du nom de la méthode et de
sa liste d’arguments:
nomObjet.nomMethode(arg1, arg2, ….)
JAVA 41
Objet → il n’existe pas de variable de type objet
→ Voiture BM=new Voiture(2, true, 160.0f)
→ Toute chose est un objet.
→ Un objet est une variable améliorée
JAVA 43
Constructeurs
→ On peut garantir l’initialisation d’un objet grâce à une méthode
spéciale appelée constructeur qui permet d’automatiser le
mécanisme d’initialisation d’un objet.
→Un constructeur est une méthode appelée au moment de la création
de l’objet.
→La création d’un objet passe par l’application de l’opérateur new sur
les constructeurs de la classe.
Exemple:
Voiture BM=new Voiture(2, false,44.50f);
Voiture Ford;
Ford = new Voiture(3, true, 55.88f);
JAVA 44
Exemple : Constructeurs
JAVA 45
Exemple : Constructeurs
JAVA 46
Exemple : Constructeurs
JAVA 47
Le destructeur
Un destructeur (et un seul) peut être défini, pour être utilisé lors de la
destruction de l'objet. Celui-ci doit forcément se nommer finalize,
il ne prend aucun paramètre et ne renvoie aucun type (void).
Exemple :
JAVA 48
Les modificateurs
Les modificateurs sont des mots-clé spéciaux du langage qui modifient
la définition et le comportement d’une classe, d’une méthode ou
d’une variable. On peut les classer en quatre grandes catégories :
→ les modificateurs permettant de contrôler l’accès à une classe, une
méthode ou une variable : public, private et protected ;
→ le modificateur static utilisé pour les variables et les méthodes de
classe ;
→ le modificateur final permettant de « figer » l’implémentation d’une
classe, d’une méthode ou d’une variable ;
→ le modificateur abstract pour la création de classes ou de
méthodes abstraites.
JAVA 49
Les modificateurs
Il existe d’autres modificateurs que nous allons voir plus tard tels que :
synchronized et volatile (utilisés pour les threads) et native (utilisé
pour la création de méthodes natives).
JAVA 50
Les modificateurs
private → personne ne peut accéder à ces définitions à part les
méthodes interne (Il limite la visibilité des méthodes et des variables
d’instance à la classe dans laquelle elles sont définies)
→ les sous-classes ne peuvent hériter ni de variables privées, ni
de méthodes privées.
JAVA 51
Les modificateurs
static → est utilisé pour définir des variables ou des méthodes de
classe. Le mot-clé static indique que l’élément est stocké dans la
classe.
final → s’applique aux classes, aux méthodes et aux variables :
• empêche le « sous-classement » de la classe ;
• final signifie que la méthode ne peut pas être redéfinie par les sous-
classes ;
• final indique que la « variable » est constante.
modificateur class NomClass [extends ClassMere] [implemenents
Interfaces]
{// champs et les méthodes }
JAVA 52
Imbrication de classe
Dans java une classe est dite interne lorsque sa définition est située à
l’intérieur de la définition d’une autre classe.
Exemple:
JAVA 53
JAVA 54
Auto-réference : le mot clé this
→ L’objet « courant » est désigné par le mot clé this.
JAVA 55
Auto-réference : le mot clé this → Exemple
JAVA 56
Tableaux
→ Les tableaux sont considérés comme des objets
→ Les éléments d’un tableau peuvent être
➔ Des variables d’un type primitif (int, char, float, double,…)
➔ Des références sur des objets
Création
• Déclaration
• Dimensionnement
• Initialisation
Attention: En java il n'est pas possible de définir des tableaux de taille
statique à la déclaration: float[7] Tab; //erreur de compilation
JAVA 57
Tableaux : Exemple 1
JAVA 58
Tableaux : Exemple 2
JAVA 59
Tableaux à plusieurs indices
→ Tableaux dont les éléments sont eux-mêmes des tableaux
→ Deux cas:
➔ Tableau rectangulaire
➔ Tableau non rectangulaire
Exemple :
JAVA 60
Tableaux à plusieurs indices
JAVA 61
Méthodes
main→ la première méthode exécutée par une application Java lors de
son lancement.
syntaxe→ public static void main (String args[ ]) { ... }
Une application Java peut avoir des arguments, introduits après le nom
de l’application.
La méthode main doit avoir comme paramètres la chaîne
" String [ ] args ", nécessaire pour stocker les arguments introduits.
"args.length" permet de déterminer le nombre d’arguments introduits
après le nom de l’application.
JAVA 62
Méthodes : main
JAVA 63
Méthodes
→Les méthodes implémentent les traitements de la classe
→ N’importe quelle exécution fait intervenir des méthodes
→ Une méthode a deux parties : déclaration & corps
→ Le type retourné peut être élémentaire ou un objet. Si la
méthode ne retourne rien on utilise void.
syntaxe :
modificateurs type_retourné nom_méthode (arg1, ... )
{ // définition des variables locales et du bloc d'instructions }
JAVA 64
Méthodes : Exemple
JAVA 65
Méthodes : surcharge
→La surcharge d'une méthode permet de définir plusieurs fois
une même méthode avec des arguments différents.
→Le compilateur choisi la méthode qui doit être appelée en
fonction du nombre et du type des arguments.
→La signature d'une méthode comprend le nom de la classe, le
nom de la méthode, le nombre et les types des paramètres.
→ Il est possible de donner le même nom à deux méthodes
différentes à condition que les signatures de ces deux
méthodes soient différentes.
JAVA 66
Méthodes : surcharge
JAVA 67
Les paquetages
→ Les classes Java sont regroupées en paquetages (packages en anglais)
comparables aux «bibliothèques» des autres langages comme le
langage C++, ...
→ L’instruction : import MesClasses ; permet l’utilisation de toutes les
classes dont les paquetage MesClasses est engendré.
Exemple:
import nomClasse; // Importe une classe
import nomPack.nomClasse; // Importe une classe de nomPack
import nomPack.*; // Importe toutes les classes de nomPack
→ Le package par défaut : c’est le package qui n’a pas de nom, et auquel
appartiennent toutes les classes d’un même répertoire.
JAVA 68
Les paquetages
Quelques paquetages du SDK (Software Development Kit)
→ java.lang : classes de base de Java
→ java.util : utilitaires
→ java.io : entrées-sorties
→ java.awt : interface graphique
→ javax.swing : interface graphique avancée
→ java.applet : applets
→ java.net : réseau
→ java.rmi : distribution des objets
JAVA 69
Les paquetages : créer un package
→ Pour créer un package, il suffit de commencer le fichier source
contenant les classes à regrouper par l'instruction package suivi du
nom que l'on désire donner au package.
JAVA 70
JAVA 71
HÉRITAGE
JAVA 72
HÉRITAGE
On peut par exemple:
– ajouter de nouvelles méthodes
– adapter (modifier) certaines méthodes
Syntaxe:
class <ClasseDerivee> extends <ClasseDeBase>
Interprétation:
→Permet de définir un lien d'héritage entre deux classes:
La classe <ClasseDeBase> est le nom de la classe de base. Elle
s'appelle une classe mère, une classe parente ou une super-classe.
La classe <ClasseDerivee> est le nom de la classe dérivée
→Par défaut il n’y a pas de extends dans la définition d’une classe:
toutes les classes héritent de la classe Object.
JAVA 73
JAVA 74
HÉRITAGE : CONSTRUCTEURS
→ Possibilité comme les méthodes de réutiliser le code des
constructeurs de la super-classe.
JAVA 75
HÉRITAGE : CONSTRUCTEURS
JAVA 76
HÉRITAGE : CONSTRUCTEURS
JAVA 77
HÉRITAGE
→L'héritage successif de classes permet de définir une hiérarchie de
classe qui se compose de super classes et de sous classes.
→Une classe ne peut avoir qu'une seule classe mère : il n'y a pas
d'héritage multiple en java.
JAVA 79
Polymorphisme
JAVA 80
Polymorphisme
→L’appel se fond sur le type effectif de l’objet référencé par ab au
moment de l’appel et non sur le type de la variable ab.
→Il faut noter que la même écriture a.f(); peut correspondre à des
appels différents de la méthode f(). Ceci est réalisé grâce au
polymorphisme.
→Le Polymorphisme veut dire que le même service peut avoir un
comportement différent suivant la classe dans laquelle il est utilisé.
C’est un concept fondamental de la programmation objet,
indispensable pour une utilisation efficace de l’héritage.
→ Pour l’objet ab si f( ) est redéfinie dans B, alors c’est cette méthode
qui sera exécutée sinon, la recherche de f() se poursuit dans la classe
mère de B, puis dans la classe mère de cette classe mère, et ainsi de
suite, jusqu’à trouver f() qui sera alors exécutée.
JAVA 81
Polymorphisme
Le polymorphisme permet d’éviter les codes qui comportent de
nombreux embranchements et tests.
Exemple :
JAVA 82
JAVA 83
Polymorphisme
instanceof: Voiture instanceof Véhicule retourne true
Inconvénients :
→Si on veut rajouter un Fourgon, on est obliger de:
changer dans le code source aux niveaux définition de la classe
Véhicule (rajouter la méthode public void appelfourgon() {})
→ En exploitant le polymorphisme, on peut :
➔Eviter les tests
➔Rendre le code extensible
Exemple:
JAVA 84
JAVA 85
Cast (transtypage)
→Le « cast » est le fait de forcer le compilateur à considérer un objet
comme étant d’un type qui n’est pas le type déclaré ou réel de l’objet.
→Les seuls casts autorisés entre classes sont les casts entre classe mère
et classes filles.
JAVA 86
Cast (transtypage)
JAVA 87
Classe et méthodes abstraites
→Une méthode est dite abstraite si on la déclare sans donner son
implémentation: on ne donne que le type de la valeur de retour et la
signature (l’entête de la méthode).
→Les méthodes abstraite sont déclarée avec le mot clè abstract.
→Une classe doit être déclarée abstraite si elle contient une méthode
abstraite : public abstract class NomClasse{...
JAVA 88
Classe abstraites : Intérêt
JAVA 89
Classe abstraites : Exemple
Soient Etudiant, Mater, Licence et Stocker telles que:
Stocker des noms d’Etudiant de deux niveaux (Mater, Licence) dans
une liste puis les afficher.
JAVA 90
JAVA 91
JAVA 92
JAVA 93
JAVA 94
Interfaces
→Une interface est une "classe" purement abstraite dont toutes les
méthodes sont abstraites et publiques.
→Une interface ne possède pas d’attribut mais elle peut posséder des
constantes.
JAVA 95
Interfaces
Syntaxe et défintion:
public interface Interface1 { ... }
public interface Interface2 { ... }
→Dans la définition d’une classe, on peut préciser qu’elle implémente
une ou plusieurs interfaces donnée(s) en utilisant une fois le mot clé
implements
public class NomClasses implements Interface1,Interface2, ... {
... }
→Une classe hérite d’une autre classe peut également implémenter une
ou plusieurs interfaces
public class NomClasses extends SuperClasse implements Interface1,
Interface1 ... { ... }
JAVA 96
Interfaces : Exemple 1
JAVA 97
Interfaces : Exemple 2
JAVA 98
Les chaînes de caractères
JAVA 99
Les chaînes de caractères
→Comparaisons de chaînes :
➔ == et !=
➔ equals( )
➔ equalsIgnoreCase( ) // sans distinguer les majuscules des minuscules
➔ compareTo( ) // comparaisons lexicographiques
JAVA 100
Les chaînes de caractères
JAVA 101
Les chaînes de caractères
→Modifications de chaînes
➔ toLowerCase( )
➔ toUpperCase( )
➔ replace( ) //remplace toutes les occurrences d’un caractère donné par un autre.
➔ substring( ) //créer une nouvelle chaîne en extrayant de la chaîne courante
➔ trim( ) //crée une nouvelle chaîne en supprimant les éventuels séparateurs
JAVA 102
Les chaînes de caractères
JAVA 103
Les chaînes de caractères
JAVA 104
Les chaînes de caractères
→Les String Java ne peuvent pas être considérées comme des tableaux
de caractères
→ Pour convertir une chaîne en un tableau de caractères, on doit
utiliser la méthode toCharArray
String ch= "settat" ; char [ ] tab1DEcarc; char [ ] tab2DEcarc;
tab1DEcarc = ch.toCharArray( ) ;
tab2DEcarc = "settat".toCharArray( );
→Conversion de type:
➔String.valueOf( ) ➔ Long.parseLong( )
➔Integer.parseInt( ) ➔ Float.parseFloat( )
➔Byte.parseByte( ) ➔ Double.parseDouble( )
➔ Short.parseShort( )
JAVA 105
Les chaînes de caractères
JAVA 106
Gestion des exceptions
→Une exception est un signal indiquant que quelque chose
d’exceptionnelle (comme une erreur, disque plein, division par zéro,
…) s’est produit.
→Elle interrompt le flot d’exécution normal du programme
→Plutôt que de compliquer le code du traitement normal, on traite les
conditions anormales à part.
→Le traitement « normal » apparaît ainsi plus simple et plus lisible.
→Résoudre les problèmes d’exception soit :
➔En envoyant un message
➔ Mettre fin au programme
➔ Revenir en arrière
➔…
JAVA 107
Gestion des exceptions
→Toute exception en Java est un objet instancier d’une sous classe de
la classe Exception
→ Arbre des exceptions
JAVA 108
Gestion des exceptions
→Quelques exceptions prédéfinies :
JAVA 109
Gestion des exceptions : try et catch
JAVA 110
Gestion des exceptions
Exceptions de type RuntimeException
Exemple :
JAVA 111
JAVA 112
Gestion des exceptions : contrôlées
→Pour définir une nouvelle exception, on crée une nouvelle classe sous
la forme suivante :
class NomDeClassEception extends ExceptionDejaDefinie { }
→Lorsque l’on veut lancer une exception, on utilise le mot clé throw
suivi de l’exception à lancer : throw new DivZero( );
→ La clause try s'applique à un bloc d'instructions correspondant au
fonctionnement normal mais pouvant générer des erreurs.
→La clause catch s'applique à un bloc d'instructions dé nissant le
traitement d'un type d'erreur. Ce traitement sera lancé sur une
instance de la classe d'exception passée en paramètre.
JAVA 113
Gestion des exceptions : contrôlées
Le JDK définit de nombreuses exceptions :
→IEOFException : fin de fichier.
→FileNotFoundException : erreur dans l'ouverture d'un fichier.
→ClassNotFoundException : erreur dans le chargement d'une
classe.
→...
Toute exception contrôlée, du JDK, pouvant être émise dans une
méthode doit être :
→soit levée dans cette méthode. Elle est alors lancée dans un
bloc try auquel est associé un catch lui correspondant.
→soit être indiquées dans le prototype de la méthode à l'aide du
mot clé throws.
JAVA 114
Gestion des exceptions : Exemple 1
JAVA 115
Gestion des exceptions : Exemple 2
JAVA 116
Gestion des exceptions : personnalisées
→Les exceptions personnalisées sont des sous-classe de la classe
Exception.
Exemple:
JAVA 117
Gestion des exceptions : personnalisées
JAVA 118
Gestion des exceptions : personnalisées
JAVA 119
Gestion des exceptions : finally
→ La clause finally dé nit un bloc d'instruction qui sera exécuté
même si une exception est lancée dans le bloc d'essai. Elle permet
de forcer la bonne terminaison d'un traitement en présence d'erreur.
→ Un blocs finally est exécutée quelle que soit le résultat du bloc try.
Exemple :
JAVA 120
Gestion des exceptions : finally
JAVA 121
Gestion des exceptions : finally
JAVA 122
Interface Graphique: awt & swing
→Java, permet de créer des interfaces graphiques homme machines
(IHM).
→Les interfaces (IHM) font intervenir de nos jours des éléments que
l'on retrouve dans la majorité des systèmes d'exploitation : les fenêtres,
les listes de choix, les menus déroulants, les boutons, les boutons radios,
etc...
➔C'est pour construire des IHM que le package awt est inclus
dans toutes les versions de Java.
➔awt s'appuie sur les ressources systèmes
→Catégories de classes :
JAVA 124
awt
JAVA 125
swing
JAVA 126
Mon premier exemple
JAVA 127
Interface Graphique: Structure
→Boite de dialogue
JAVA 128
Interface Graphique: conteneurs
JFrame
→La plupart des composants graphiques ont une taille par défaut, qui
peut d'ailleurs être nulle.
JAVA 129
Interface Graphique: conteneurs
JAVA 130
Interface Graphique: conteneurs
→JFrame cadre = new javax.swing.JFrame(" Deuxième exemple ");
on instancie ici la classe JFrame en passant au constructeur une chaîne
de caractères pour le titre de la fenêtre.
→panneau.setPreferredSize(new Dimension(324, 240));
le panneau ait 324pixels de largeur et 240 pixels de hauteur.
→panneau.setBackground(Color.YELLOW);
le panneau ait la couleur jaune pour couleur de fond.
→cadre.setContentPane(panneau); le containeur de la fenêtre soit un
panneau.
→cadre.setLocation(500, 500); : on positionne le cadre.
→cadre.pack(); : la méthode pack: calcule la dimension de la fenêtre en
fonction de ce qui est mis à l'intérieur.
→cadre.setVisible(true); par défaut, une fenêtre est invisible ; on demande
ici à ce que la fenêtre soit visible
JAVA 131
Interface Graphique: conteneurs
→JLabel label = new JLabel("Bonjour"); on
instancie ici un label en
passant au constructeur une chaîne de caractères
→ cadre.add(label); l’ajout de label
→cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
par défaut, lorsqu'on ferme une fenêtre, cela ne termine pas
l'application. On demande par cette instruction que
l'application se termine quand on ferme la fenêtre.
JAVA 132
Interface Graphique: conteneurs
JAVA 133
Interface Graphique: conteneurs
JAVA 134
Interface Graphique: conteneurs
JPanel
JAVA 135
Interface Graphique: conteneurs
JAVA 136
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JAVA 137
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Jlabel :
Un Label affiche une seule ligne de texte (étiquette) non modifiable.
En général, les étiquettes ne traitent pas d'événements.
Emplacement :
1. JLabel.BOTTOM
2. JLabel.CENTER
3. JLabel.LEFT
4. JLabel.RIGHT
5. JLabel.TOP
Exmple:
JAVA 139
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JAVA 140
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextField :
→Le champ de texte est un dispositif d'entrée de texte sur une seule ligne.
→Il est source d’ActionEvent
→On peut définir un champ de texte comme étant éditable ou non.
Méthodes :
void setText(String text)
String getText() pour mettre ou retirer du texte dans le TextField
Exemple:
JAVA 141
JAVA 142
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JAVA 143
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JList : Constructeurs :
JList() // modèle vide
JList(ListModel dataModel) // cas général
JList(Object[] listData) // tableau
JList(Vector listData) // vecteur
Exemple:
JAVA 145
JAVA 146
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JCheckBox :
JAVA 149
Interface Graphique: LES COMPOSANTS GRAPHIQUES
TitledBorder :
Exemple:
JAVA 150
JAVA 151
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JRadioButton :
Exemple:
JAVA 152
JAVA 153
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JButton : Constructeurs :
Méthodes :
Exemple:
JAVA 154
JAVA 155
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JAVA 156
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextArea : zone de texte plusieurs lignes
Constructeurs.
JTextArea() Construit une nouvelle instance de JTextArea. JTextArea(int l, int
c) Construit une nouvelle instance de JTextArea, lignes l et c colonnes.
JTextArea(String texte) Construit un JTextArea avec un texte initial.
JTextArea(String texte, int l, int c)
Méthodes:
String getText() String getText(int d, int l)
String getSelectedText() void setText(String t)
void append(String t) void insert(String t, int pos)
void replaceRange(String t,int d,int f) int getColumns( )
void replaceSlection(String t) void setEditable(boolean)
Exemple:
JAVA 157
JAVA 158
JAVA 159
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JScrollBar : barre de défilement
JAVA 160
JAVA 161
Interface Graphique: Menu
Menu :
Pour créer un menu déroulant, il y a essentiellement 3 opérations :
→création de la barre menu :
JMenuBar menuBar=new JMenuBar();
→création des menus :
JMenu couleur=new JMenu("couleur"); menuBar.add(couleur);
JMenu taille=new JMenu("taille"); menuBar.add(taille);
→création des options :
rouge=new JMenuItem("rouge");
rouge.addActionListener(this);couleur.add(rouge);
bleu=new JMenuItem("bleu");
bleu.addActionListener(this);couleur.add(bleu);
Naturellement, il faudra ajouter la barre des menus à la fenêtre, et adjoindre
aux diférentes options comme indiqué ci-dessus.
Exemple 1:
JAVA 162
JAVA 163
JAVA 164
Interface Graphique: Menu →Exemple 2
JAVA 165
JAVA 166
Interface Graphique: JFileChooser
Un JFileChooser permet de sélectionner un fichier en parcourant
l’arborescence du système de fichier.
Exemple :
JAVA 167
JAVA 168
Interface Graphique: JColorChooser
Un JColoChooser permet de choisir une couleur.
Exemple :
JAVA 169
JAVA 170
Interface Graphique: gestionnaire de disposition
→ Layout est une technique qui permet de placer des composants dans
un container.
→Layout place les composants les uns par rapport aux autres.
→Layout organise les composants lorsque la taille du container varie.
→Layout gère le positionnement.
JAVA 171
Interface Graphique: BorderLayout
→Le BorderLayout sépare un container en cinq zones: nord, sud,
ouest, est, et centre.
→"nord" et "sud" occupent toute la largeur,
→"ouest" et "est" occupent la hauteur qui reste,
→"centre" occupe la place restante.
→Lorsque l’on agrandit le container, le centre s'agrandit. Les autres
zone prennent uniquement l’espace qui leur est nécessaire.
Exemple:
JAVA 172
JAVA 173
Interface Graphique: BoxLayout
→Un BoxLayout permet d’empiler les composants du container
( verticalement ou horizontalement)
→ BoxLayout donne à chaque composant la place qu’il demande
→En utilisant ce layout on peut rajouter des blocs invisible.
Exemple:
JAVA 174
JAVA 175
Interface Graphique: CardLayout
→ CardLayout aide à construire des boîtes de dialogue composées de
plusieurs onglets.
→Un onglet se compose généralement de plusieurs contrôles : on
insère des panneaux dans la fenêtre utilisée par le CardLayout.
Exemple:
JAVA 176
JAVA 177
Interface Graphique: FlowLayout
→ Par défaut le gestionnaire de présentation d'un panel est de type
FlowLayout.
→Un FlowLayout permet de ranger les composants dans une ligne.
→Si l’espace est trop petit FlowLayout ajoute une ligne de plus.
Exemple:
JAVA 178
JAVA 179
JAVA 180
Interface Graphique: GridLayout
→ GridLayout établit un réseau de cellules identiques qui forment une
sorte de quadrillage invisible : les composants sont organisés en
lignes et en colonnes.
→Les éléments insérés dans la grille ont tous la même taille.
→Les cellules du quadrillage se remplissent de droite à gauche ou de
haut en bas.
Exemple:
JAVA 181
JAVA 182
Interface Graphique: GridBagLayout
→ GridBagLayout (grille étendue) est le plus riche en fonctionnalités : le
conteneur est divisé en cellules égales mais un composant peut occuper
plusieurs cellules de la grille et il est possible de faire une distribution
dans des cellules distinctes.
→ Un objet de la classe GridBagConstraints permet de donner les
indications de positionnement et de dimension à l'objet GridBagLayout.
Exemple:
JAVA 183
JAVA 184
Interface Graphique: Gestion des évènements
→ Il est possible d’affecter un évènement à un objet grâce à des classes
spéciales appelées listeners. Ces classes nous permettent d’écouter les
actions effectuées sur un objet swing et de lancer la fonction adéquat à
l’action produite.
→Les deux classes : java.awt.event.MouseMotionAdapter et
java.awt.event.ActionListener nous permettent l’écoute des actions.
→Lorsqu'un événement se produit :
➔il est reçu par le composant avec lequel l'utilisateur interagit (un
bouton, un curseur, un champ de texte, ...).
➔Ce composant transmet cet événement à un autre objet, un
écouteur qui possède une méthode pour traiter l’événement.
JAVA 185
Interface Graphique: Gestion des évènements
→ Les événements utilisateurs sont gérés par plusieurs interfaces
EventListener.
→Les interfaces EventListener permettent à un composant de générer
des événements utilisateurs. Une classe doit contenir une interface
auditeur pour chaque type de composant :
JAVA 186
Interface Graphique: Gestion des évènements
AdjustmentListener :Déplacement d'une échelle
ComponentListener :Savoir si un composant a été caché, affiché …
ContainerListener : Ajout d'un composant dans un Container
FocusListener : Pour savoir si un élément a le "focus"
KeyListener : Pour la gestion des événements clavier
JAVA 187
Interface Graphique: Gestion des évènements
Interface ActionListener
void actionPerformed(ActionEvent e)
Interface MouseListener
void mousePressed(MouseEvent e)
void mouseReleased(MouseEvent e)
void mouseClicked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void actionPerformed(ActionEvent e)
JAVA 188
Interface Graphique: Gestion des évènements
ActionListener : Exemple 1
JAVA 189
Interface Graphique: Gestion des évènements
ActionListener : Exemple 2
JAVA 190
JAVA 191
Interface Graphique: Gestion des évènements
ItemListener : Exemple
JAVA 192
JAVA 193