Java- LT informatique

169

Transcript of Java- LT informatique

Comment Java ? Java Bien !

Formation "Programmation Java"

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

Introduction, notions et

concepts de base

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

Java, c'est quoi ?

Un environnement de programmation orienté objets adapté à la distribution d'applications

Développé par SUN Microsystems

Principales propriétés de Java

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)

Premier programme Java

Fichier source Java : HelloWorld.java public class HelloWorld { public static void main(String[] args){ System.out.println("Hello world");

} }

Notions de base sur la programmation objet

Qu’est-ce qu’un objet ?

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)

Les classes en Java

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

Les méthodes

Les variables

Variable locale Ou

variable d’instance ?

Une thread (appelée aussi activité) est un fil d'instructions (un chemin d’exécution) à l'intérieur d'un processus.

Le Suivant!

Swing est une extension des AWT

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

Swing

JComponent

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

Composants racines de Swing

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

Les trois types de conteneurs les plus utilisés sont : JFrame, JPanel et JApplet

Méthodes paintComponent et repaint

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

Méthodes proposées de la classe Graphics

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

Positionner son composant Les Layout Managers

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.

FlowLayout

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.

BorderLayout

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).

GridLayout

GridLayout

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).

BoxLayout

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

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 JButton

Constructeur Rôle

JButton()

JButton(String) préciser le texte du bouton

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 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

Jlist Example

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

Jlist Example +

JScrollPane

JScrollPane Example

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()

JInternalFrame Example

JInternalFrame Example

Le Suivant!

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