Introduction au langage Java et aux concepts de base de la programmation orientée objets (P.O.O.)
Le langage : structure lexicale, types de données, structure de contrôle
Les tableaux, les chaînes de caractères
Les packages
Héritage, classes de base et interfaces
Les exceptions
Les threads
Les entrées-sorties
Java et les interfaces graphiques
Java et l'Internet : les applets
Java et le réseau
Java et les bases de données
3. C'est une formation sur la programmation Java
Objectifs :
Introduction au langage Java et aux concepts de base de la programmation
orientée objets (P.O.O.)
Par qui : Hassan Chaaban
Licencié en administration de base de données (De Microsoft)
Master en informatique
Enseignant/formateur Java,Android,VB.Net,C#.Net, SQL Server
La formation
4. Planning
Introduction, notions et concepts de base
POO - Notions de base sur les classes
Le langage : structure lexicale, types de données, structure de contrôle
Les tableaux, les chaînes de caractères
Les packages
Héritage, classes de base et interfaces
Les exceptions
Les threads
Les entrées-sorties
Java et les interfaces graphiques
Java et l'Internet : les applets
Java et le réseau
Java et les bases de données
6. Presentation du language
Premier programme Java, compilation, exécution
Quelques notions sur la programmation objet
Notions de base sur les classes
Types de données en Java
Structure lexicale du langage
Tableaux et classes de base
Blocs et instructions de contrôle
Paquetages
Plan
10. Java est un langage
• orienté objet
• à classes
de syntaxe proche du langage C (C++)
fourni avec le JDK (Java Développement Kit) :
• outils de développement
• ensemble de paquetages très riches et très variés
portable (grâce JVM)
16. Toute entité identifiable, concrète ou abstraite,
Un objet réagit à certains messages qu'on lui envoie de
l'extérieur ; la façon dont il réagit détermine le
comportement de l'objet
Il ne réagit pas toujours de la même façon à un même
événement ; sa réaction dépend de l’état dans lequel il se
trouve
17. Notion d’objet en Java
Un objet possède :
• une identité unique (identifie l’objet)
• un comportement (ou Methodes)
• un état interne (Attributes)
L’état interne est donné par des valeurs de variables (ou
attributs)
Le comportement est donné par des fonctions ou sous-
programmes, appelées méthodes (ou opérations)
20. Une classe est un moule pour créer des objets
Une classe est composée de membres :
• des variables, ou champs, ou attributs
donnent l’état des instances
• des méthodes , ou opérations
indiquent les types de messages qui pourront être
envoyés aux instances
• des constructeurs
créent les instances
113. Swing propose de nouvelles classes et interfaces
parallèle à celle de l'AWT, pour construire des
interfaces graphiques.
L'ancêtre de cette hiérarchie est le composant
JComponent
Swing : généralités
114. Le paquetage javax.swing contient de nombreuse classes
permettant de réaliser des interfaces graphiques.
La classe de base est la classe JComponent.
Quatre classes définissent des composant de «haut niveau» :
JFrame : définit une fenêtre application, avec titre, boutons fermeture,
iconification, agrandissement, menu, etc..
JWindow : définit une fenêtre sans le cadre.
JDialog : définit une fenêtre de dialogue, qui peut être modale ou non.
JApplet : définit une applet.
Swing : généralités (suite)
118. Architecture d'une interface
Swing
Une interface sera composée:
D'un composant racine (toplevel)
D'un ou de plusieurs containers
De composants au sein des containers
120. La classe JFrame
Elle représente une fenêtre principale qui possède un
titre, une taille modifiable et éventuellement un menu.
121. La classe JFrame(Suite)
Par défaut, la fenêtre créée n'est pas visible. La méthode
setVisible(true) permet de l'afficher
Tous les composants associés à un
objet JFrame sont gérés par un
objet de la classe JRootPane. Un
objet JRootPane contient plusieurs
Panes. Tous les composants
ajoutés au JFame doivent être
ajoutés à un des Pane du
JRootPane et non au JFrame
directement.
122. La classe JFrame(Suite)
Le Pane le plus utilisé est le
ContentPane. Le Layout
manager par défaut du
contentPane est
BorderLayout. Il est
possible de le changer .
123. JFrame
public JFrame(); Construction de la fenêtre
public JFrame(String titre); Construction de la fenêtre avec un titre
public JMenuBar getJMenuBar(); récupère la barre de menu de l'application
public void setJMenuBar(JMenuBar barreMenu);
place automatiquement une barre de menu donnée en haut de la fenêtre, en
laissant le pavé de contenu libre pour le reste du contenu applicatif.
public void setLayout(java.awt.LayoutManager gestionnaire);
place un nouveau gestionnaire de disposition des composants graphiques
internes à la fenêtre.
public void setTitle(String titre); Spécifie un titre
public void setFont(Font fonte); Définie une nouvelle police de caractères
public Component add(Component composant); Place un nouveau composant dans le conteneur
public void setBackground(Color couleur); Spécifie une couleur de fond
public void setForeground(Color couleur); Spécifie une couleur du texte
public Graphics getGraphics();
Récupère la surface de travail du composant pour pouvoir réaliser
d'autres tracés.
public int getHeight(); Hauteur du composant
public void setLocation(int x, int y);
Positionne les coordonnées du composant par rapport au coin
supérieur gauche.
public void setSize(int largeur, int hauteur); Spécifie les dimensions du composant
public void setVisible(boolean visible); Rend un composant visible ou non
public int getWidth(); Largeur du composant
public void repaint(); Demande de redessiner le composant
public void setDefaultCloseOperation(int operation) pour déterminer le comportement de la fenêtre lors de sa fermeture
124. Les trois types de conteneurs les plus utilisés sont :
JFrame, JPanel et JApplet
126. En Swing, c'est dans cette méthode que doit être fait les dessins d'un composant. Cette
méthode est définie dans la classe JComponent. C'est en redéfinissant cette méthode que
l'on peut ajouter des instructions de dessin
En AWT, la méthode paintComponent n'existe pas et c'est la méthode paint qui doit être
redéfinie pour ajouter du dessin. En Swing, la méthode paint existe encore mais elle ne
doit pas être redéfinie.
Méthodes paintComponent et repaint
128. Graphics comporte quelques méthodes permettant de dessiner et remplir des formes
courantes :
Méthode Description
drawArc(int x, int y, int largeur, int hauteur, int angledébut, int anglefin) Dessine un arc de cercle (angle en degré)
drawLine(int xdébut, int ydébut, int xfin, int yfin) Dessine une ligne
drawOval(int x, int y, int largeur, int hauteur) Dessine un ovale
drawPolygon(int[] lesX, int[] lesY, int nombrePoint)
Dessine un polygone et le ferme en joignant les
extrémités
drawRect(int x, int y, int largeur, int hauteur) Dessine un rectangle
drawRoundRect(int x, int y, int largeur, int hauteur, int largeurArc, int hauteurArc) Dessine un rectangle à coins arrondis
fillArc(int x, int y, int largeur, int hauteur, int angledébut, int anglefin) Dessine un arc de cercle plein
fillOval(int x, int y, int largeur, int hauteur) Dessine un ovale plein
fillPolygon(int[] lesX, int[] lesY, int nombrePoint) Dessine un polygone plein
fillRect(int x, int y, int largeur, int hauteur) Dessine un rectangle plein
fillRoundRect(int x, int y, int largeur, int hauteur, int largeurArc, int hauteurArc) Dessine un rectangle plein à coins arrondis
131. Vous allez voir qu'il existe plusieurs sortes de layout
managers
FlowLayout java.awt
BorderLayout java.awt
GridLayout java.awt
BoxLayout javax.swing
Les Layout Managers
132. FlowLayout
Constructeurs:
FIowLayout()
Crée un gestionnaire FlowLayout avec des lignes centrées et un espacement horizontal et vertical de 5 pixels entre les composants.
Flowlayout(int align)
Crée un gestionnaire Fl owLayout avec un alignement de type align (voir constantes).
L'espacement horirontal et vertical des composants est de 5 pixels.
Flowlayout(int align, int hgap, int vgap)
Crée un gestionnaire FlowLayout avec un alignement de type align (voir constantes). Les espacements horizontal et vertical des
composants est de hgap et vgal pixels.
Constantes:
int FIowLayout .CENTER : Indique que les composants sont à centrer sur chaque ligne.
int FIowLayout .LEFT : Indique que les composants d'une ligne doivent être alignés à
gauche.
int FIowLayout .RIGHT : Indique que les composants d'une ligne doivent être alignés à
droite.
134. BorderLayout
BorderLayout()
Crée un gestionnaire BorderLayout.
BorderLayout(int hgap, intvgap)
Crée un gestionnaire BorderLayout, qui laisse entre les composants un espace horizontal
hgap et un espace vertical vgap.
136. GridLayout
public GridLayout (int rows, int cols)
Permet gestionnaire de placements de composant ayant la forme d'une grille de rows lignes par cols colonnes.
public GridLayout (int rows, int cols, int hgap, int vgap)
idem constructeur précédent avec un espacement horizontal et vertical entre les composants de hgap et vgap pixels (par défaut égal
à 0).
139. BoxLayout
BoxLayout(Container target, int axis)
spécifie si les composants doivent être mis sur une ligne (paramètre BoxLayout.X_AXIS) ou sur une colonne
paramètre BoxLayout.Y_AXIS).
141. la classe JLabel
Constructeurs Rôle
JLabel() Création d'une instance sans texte ni image
JLabel(String)
Création d'une instance en précisant le
texte
JLabel(String, int)
Création d'une instance en précisant le
texte et l'alignement horizontal
142. La classe JLabel définit plusieurs méthodes pour modifier l'apparence du composant :
L'alignement vertical par défaut d'un JLabel est centré. L'alignement horizontal par défaut est soit à gauche s'il ne contient
que du texte, soit centré s'il contient une image avec ou sans texte. Pour modifier cet alignement, il suffit d'utiliser les
méthodes ci-dessus en utilisant des constantes en paramètres :
SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT, SwingConstants.TOP, SwingConstants.BOTTOM
Par défaut, un JLabel est transparent : son fond n'est pas dessiné. Pour le dessiner, il faut utiliser la méthode setOpaque() :
void setText(String t) Affecte un texte au label.
String getText() Retourne le texte du label.
void setFont(Font f) Affecte une police au label.
Font getFont() Retourne la police du label.
void setOpaque(boolean b)
Rend le label opaque si b vaut true,par défaut un label
est transparent.
boolean isOpaque() Retourne la propriété opaque du label.
void setHorizontalAlignment(int a)
Affecte l'alignement horizontal : LEFT, RIGHT, CENTER,
LEADING, TRAILING
void setVerticalAlignment(int a) Affecte l'alignement vertical : TOP, BOTTOM, CENTER
void setBackground(Color c)
Color getBackground()
void setForeground(Color c)
Color getForeground()
144. la classe AbstractButton
Méthode Rôle
AddActionListener
Associer un écouteur sur un événement de
type ActionEvent
AddItemListener
Associer un écouteur sur un événement de
type ItemEvent
doClick() Déclencher un clic par programmation
getText() Obtenir le texte affiché par le composant
setEnabled() Activer/désactiver le composant
setText() Mettre à jour le texte du composant
isSelected()
Indiquer si le composant est dans l'état
sélectionné
setSelected()
Définir l'état du composant (sélectionné ou
non selon la valeur fournie en paramètre
146. la classe JCheckBox
Constructeur Rôle
JCheckBox(String) précise l'intitulé
JCheckBox(String, boolean) précise l'intitulé et l'état
147. la classe JRadioButton
Constructeur Rôle
JRadioButton()
Créer un bouton non sélectionné sans
libellé
JRadioButton(String)
Créer un bouton non sélectionné avec le
libellé fourni en paramètre
JRadioButton(String, boolean)
Créer un bouton avec le libellé et l'état
fournis en paramètres
149. la classe JTextComponent
La classe abstraite JTextComponent est la classe mère de tous les composants permettant la saisie de texte.
Méthode Rôle
void copy() Copier le contenu du texte et le mettre dans le presse papier système
void cut() Couper le contenu du texte et le mettre dans le presse papier système
Document getDocument() Renvoyer l'objet de type Document qui encapsule le texte saisi
String getSelectectedText() Renvoyer le texte sélectionné dans le composant
int getSelectionEnd() Renvoyer la position de la fin de la sélection
int getSelectionStart() Renvoyer la position du début de la sélection
String getText() Renvoyer le texte saisi
String getText(int, int)
Renvoyer une portion du texte débutant à partir de la position donnée par le
premier paramètre et la longueur donnée dans le second paramètre
bool isEditable() Renvoyer un booléen qui précise si le texte est éditable ou non
void paste() Coller le contenu du presse papier système dans le composant
void select(int,int)
Sélectionner une portion du texte dont les positions de début et de fin sont
fournies en paramètres
void setCaretPosition(int) Déplacer le curseur dans le texte à la position précisé en paramètre
void setEditable(boolean) Permet de préciser si les données du composant sont éditables ou non
void setSelectionEnd(int) Modifier la position de la fin de la sélection
void setSelectionStart(int) Modifier la position du début de la sélection
void setText(String) Modifier le contenu du texte
150. la classe JTextField
public JTextField();
Ce constructeur permet de créer l'objet avec
les paramètres par défaut.
public JTextField(int columns);
Ce constructeur permet de créer l'objet vide
avec le nombre de colonnes spécifiés.
public JTextField(String text);
Ce constructeur permet de créer l'objet avec
le texte spécifié.
public JTextField(String text, int columns);
Ce constructeur permet de créer l'objet avec
le texte et le nombre de colonnes spécifiés.
151. Méthode Description
int getColumns();
Cette méthode permet de demander le
nombre de colonnes dans l'objet TextField.
int getHorizontalAlignment();
Cette méthode permet de demander
l'alignement horizontal du texte.
void setColumns(int columns);
Cette méthode permet de fixer le nombre de
colonnes dans l'objet TextField et revalide ses
dispositions.
void setFont(Font f);
Cette méthode permet de fixer la police de
caractères courante.
void setHorizontalAlignment(int alignment);
Cette méthode permet de fixer l'alignement
horizontal du texte.
la classe JTextField
152. la classe JTextArea
JTextArea() Construit une nouvelle instance de JTextArea.
JTextArea(int l, int c)
Construit une nouvelle instance de JTextArea,
avec l lignes et c colonnes. Les lignes et colonnes
sont utilisées pour déterminer la taille préférrée
du JTextArea, et éventuellement faire apparaître
les barres de défilement, si le JTextArea est placé
dans un JScrollPane.
JTextArea(String texte) Construit un JTextArea avec un texte initial.
JTextArea(String texte, int l, int c)
JTextArea(Document doc, String t, int l, int c)
153. String getText() Retourne le texte du JTextArea.
String getText(int d, int l)
Retourne le texte du JTextArea, qui a pour
longueurl à partir de d.
String getSelectedText() Retourne le texte sélectionné.
void setText(String t) Le texte du JTextArea est remplacé par t.
void append(String t) Ajoute le texte t à la fin du JTextArea.
void insert(String t, int pos)
Insère le texte t à la position pos, dans
le JTextArea.
void replaceRange(String t,int d,int f)
Remplace le texte du JTextArea qui va
de d à f par le texte t.
void replaceSlection(String t)
Remplace le texte sélectionné du JTextArea par
le texte t.
la classe JTextArea
154. la classe JTextArea
int getSelectionStart() Retourne l'indice du début de la sélection.
int getSelectionEnd Retourne l'indice de la fin de la sélection.
void setSelectionStart(int d) Positionne le début de la sélection.
void setSelectionEnd(int e) Positionne la fin de la sélection.
Color getSelectedTextColor() Retourne la couleur du texte sélectionné.
Color getSelectionColor()
Retourne la couleur de fond du texte
sélectionné.
void setSelectedTextColor(Color c) Change la couleur du texte sélectionné.
void setSelectionColor(Color c) Change la couleur du fond du texte sélectionné.
void select(int d, int f) Sélectionne le texte de d à f.
void selectAll() Sélectionne tout le texte.
155. la classe JTextArea
void cut() Coupe le texte sélectionné et le copie dans le presse-papiers.
void copy() Copie le texte sélectionné dans le presse-papiers.
void paste() Copie le presse-papiers à la place du texte sélectionné.
156. la classe JList
La classe JList permet d'afficher une liste d'objets, et offre à l'utilisateur la possibilité de
sélectionner un ou plusieurs objets de la liste.
JList() Crée un JList vide.
JList(Object [] donnees)
Crée un JList qui affiche les données contenues dans le
tableau donnees.
JList(Vector<?> v) Crée un JList qui affiche les données contenues dans le vecteur v.
JList (ListModel l) Crée un JList qui affche les données contenues dans le ListModel l.
157. la classe JList
int getSelectionMode() Retourne le mode de sélection des données.
void setSelectionMode( int sm)
javax.swing.ListSelectionModel.SINGLE_SELECTION
javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION
javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
void setVisibleRowCount( int l)
void ensureIndexVisible(int index) Assure que l'item au rang index est visible.
void clearSelection() Plus aucun item sélectionné.
boolean isSelectionEmpty() Retourne true s'il n'y a aucun item sélectionné.
int getLastVisibleIndex() Retourne l'indice du dernier item visible.
int getSelectedIndex() Retourne l'indice de l'item sélectionné.
int[] getSelectedIncices() Retourne les indices des items sélectionnés.
void setSelectedIndex(int i) Affecte l'indice de l'item sélectionné.
void setSelectedIndices(int [] i) Affecte les indices des items sélectionnés.
Object getSelectedValue() Retourne la valeur de l'item sélectionné.
void setSelectedValue(Object v,
boolean b)
L'item sélectionné devient v. Si b vaut true, il est rendu visible dans
le JList.
Object[] getSelectedValues() Retourne un tableau des items sélectionnés.
ListModel getModel() Retourne le modèle de données affiché par le JList.
void setModel(ListModel lm) Le nouveau modèle de données affiché par le JList est lm.
158. la classe JList
int getSize() Retourne le nombre d'éléments présents dans la liste.
boolean isEmpty() Retourne getSize()==0
void clear() Enlève tous les éléments.
void addElement(Object obj) Ajoute element en fin de liste.
Object firstElement()
Object lastElement()
Object get(int index)
boolean contains(Object element) Retourne true si element est dans la liste et false sinon.
int indexOf(Object element)
int indexOf(Object element, int index)
int lastIndexOf(Object element)
int lastIndexOf(Object element, int index)
Object remove(int index)
boolean removeElement(Object element)
Enlève la première occurrence de element de la liste, et
retourne true. Retourne false si element n'est pas dans la liste.
void removeRange(int depuis, int jusqua)
Enlève de la liste tous les élément d'indices depuis (inclus)
à jusqua (exclu).
Object set(int index, Object element)
DefaultListModel
160. la classe JScrollPane
JScrollPane est un conteneur permettant de munir un composant de barres de défilement
JScrollBars sont munies d'une stratégie d'affichage qui peut être :
• VERTICAL_SCROLLBAR_AS_NEEDED
• VERTICAL_SCROLLBAR_NEVER
• VERTICAL_SCROLLBAR_ALWAYS
• HORIZONTAL_SCROLLBAR_AS_NEEDED
• HORIZONTAL_SCROLLBAR_NEVER
• HORIZONTAL_SCROLLBAR_ALWAYS
JScrollPane()
politique horizontale et
verticale AS_NEEDED
JScrollPane(Component vue )
politique horizontale et
verticale AS_NEEDED
JScrollPane(Component vue,
int vPolitique, int hPolitique)
Crée un JScrollPane avec composant
vue avec une politique horizontale et
une politique verticale
JScrollPane(int vPolitique, int hPolitique)
Crée un JScrollPane sans composant
vue avec une politique horizontale et
une politique verticale
161. la classe JScrollPane
void setViewPortView( Component c) Affecte le composant Scrollable à visualiser.
void setVerticalScrollBarPolicy(int p)
Affecte la stratègie d'affichage de
la ScrollBar verticale.
int getVerticalScrollBarPolicy()
void setHorizontalScrollBarPolicy( int p)
Affecte la stratègie d'affichage de
la ScrollBar verticale.
int getHorizontalScrollBarPolicy()
void setColumnHeaderView (Component c)
Affecte un composant comme en-tête de
colonnes
164. JInternalFrame()
Crée une JInternalFrame non redimensionnable,
non fermable, non maximisable, non iconifiable
et sans titre.
JInternalFrame(String title)
Crée une JInternalFrame non redimensionnable,
non fermable, non maximisable et non iconifiable.
JInternalFrame(String title, boolean resizable)
JInternalFrame(String title, boolean resizable,
boolean closable)
JInternalFrame(String title, boolean resizable,
boolean closable, boolean maximizable)
JInternalFrame(String title, boolean resizable,
boolean closable, boolean maximizable,
boolean iconifiable)
la classe JInternalFrame
165. la classe JInternalFrame
JDesktopPane getDesktopPane()
Retourne le JDesktopPane qui contient cette
frame.
String getTitle() Retourne le titre de la frame.
void setTitle(String t) Affecte le titre de la frame.
boolean isSelected() Retourne true si la fenêtre est active
void toBack()
void toFront()
169. Les événements et les écouteurs
L’interface ActionListener et la classe ActionEvent
L’interface ItemListener et la classe ItemEvent
Les classes anonymes et les classes internes
Les classes
JMenuBar, JMenu, JMenuItem, JCheckedMenuItem
(constructeurs et principales méthodes)
Fenêtres de dialogue (JOptionPane) : Message, Saisie et
confirmation