Download - Java- LT informatique
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
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
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
Un environnement de programmation orienté objets adapté à la distribution d'applications
Développé par SUN Microsystems
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)
Fichier source Java : HelloWorld.java public class HelloWorld { public static void main(String[] args){ System.out.println("Hello world");
} }
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
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)
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
Une thread (appelée aussi activité) est un fil d'instructions (un chemin d’exécution) à l'intérieur d'un processus.
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
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)
JComponent
JComponent est la classe de base de tous les composants Swing, à part
JFrame, JDialog et JApplet
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
La classe JFrame
Elle représente une fenêtre principale qui possède un titre, une taille modifiable et éventuellement un menu.
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.
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 .
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
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
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
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
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.
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.
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).
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).
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
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()
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
la classe JCheckBox
Constructeur Rôle
JCheckBox(String) précise l'intitulé
JCheckBox(String, boolean) précise l'intitulé et l'état
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
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
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.
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
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)
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
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.
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é.
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.
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.
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
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
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
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
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()
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