0% ont trouvé ce document utile (0 vote)
62 vues46 pages

3 - Programmation Évènementielle GUI Programming in Java

Ce document présente un cours sur l'architecture distribuée. Il introduit les concepts de programmation événementielle, d'interfaces graphiques Java et de programmation web Java.

Transféré par

tilimsani143
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
62 vues46 pages

3 - Programmation Évènementielle GUI Programming in Java

Ce document présente un cours sur l'architecture distribuée. Il introduit les concepts de programmation événementielle, d'interfaces graphiques Java et de programmation web Java.

Transféré par

tilimsani143
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 46

Université Abdelmalek Essaâdi

Faculté des Sciences de Tétouan


Département Informatique

Licence d'études fondamentales :


Sciences Mathématiques et Informatiques - SMI / S6 -

M36 : Architecture Distribuée


PR. ABDOUN OTMAN
DÉPARTEMENT INFORMATIQUE, FACULTÉ DES SCIENCES
UNIVERSITÉ ABDELMALEK ESSAÂDI, TÉTOUAN
Plan du cours
1. Introduction

2. Intégrer les accès aux données : Java Database Connectivity

3. Programmation évènementielle : GUI Programming in Java

4. Application Web Java : Jakarta EE

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 2


Programmation
évènementielle
• G U I : I N T E R FA C E G R A P H I Q U E
• I N T E R FA C E S G R A P H I Q U E S E N J AVA :
• S W I N G / AW T
• J AVA F X
• SWT

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 3


Programmation évènementielle
• GUI : INTERFACE GRAPHIQUE

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 4


GUI : Interface graphique
Introduction
✓ Une interface graphique est un outil permettant d’interagir avec un programme
informatique.
✓ C’est un objet très complexe qui est à l’interface de nombreux aspects .
✓ La plupart des langages disposent de bibliothèques pour prendre en charge une partie de
cette complexité.
✓ Le programmeur doit simplement penser aux éléments graphiques à mettre en place (cadre,
menu, boutons).
✓ Il doit également penser au fond de son programme
c’est-à-dire les traitements qu’il doit faire.

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 5


GUI : Interface graphique :
Programmation évènementielle

✓ Parmi les styles de programmation :


Programmation séquentielle

Programmation pilotée par


une boucle d’évènements
O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 6
GUI : Interface graphique
Modèle MVC
✓ La Programmation par événements se base sur :
✓ Envoi de signaux
✓ Un contrôleur s’occupe d’envoyer les signaux au bon
destinataire

✓ L’architecture Modèle - Vue - Contrôleur s’articule


sur :
✓ Signaux : Ils sont déclenchés par des instances extérieurs
au programme (clique de l’utilisateur, branchement d’un
périphérique, . . .).
✓ Vue : Compose l’interface utilisateur, ainsi les Différents
éléments d’interaction (bouton, champs de texte,
labels,...)

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 7


GUI : Interface graphique
Modèle MVC
✓ MVC est un patron de conception (Design pattern) qui
représente une architecture logicielle (une manière
de structurer une application ou un ensemble de
logiciels) :
✓ MVC permet d’organiser, structurer une application
interactive en séparant :

✓ Les données et leurs traitements : Le Modèle

✓ La représentation des données : La Vue

✓ Le comportement de l’application : Le Contrôleur

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 8


Programmation
évènementielle
• G U I : I N T E R FA C E G R A P H I Q U E
• I N T E R FA C E S G R A P H I Q U E S E N J AVA :
• S W I N G / AW T
• J AVA F X
• SWT

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 9


Programmation évènementielle
• INTERFACES GRAPHIQUES EN JAVA:
• Swing / AWT
• JavaFX
• SWT (Standard Widget Toolkit)

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 10


Interfaces graphiques en Java
• SWING / AWT

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 11


Interfaces graphiques en Java
AWT
✓ L'AWT (Abstract Window Toolkit) est historiquement la première API dédiée pour le
développement des interfaces graphique en Java dès le JDK 1.0 (ancienne terminologie
pour parler du Java SE).

✓ La contrainte de l'AWT, ou l'avantage (c'est à double tranchants), c'est que Java fait appel au
système d'exploitation pour afficher les composants graphiques.

✓ Pour cette raison, l'affichage de l'interface utilisateur d'un programme peut diverger
sensiblement : effectivement, chaque système d'exploitation dessine à sa manière ses
différents éléments graphiques (bouton, zone de texte, ...).

✓ AWT ne contient que des composants graphiques qui existent sur tous les OS.

✓ AWT est une librairie relativement pauvre, comparativement aux autres qui vont vous être
présentées ci-dessous.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 12


Interfaces graphiques en Java
Swing
✓ L'API Swing est une librairie de mise en œuvre d'interfaces graphiques a été intégrée dans
l'environnement Java SE depuis sa version 1.2 (anciennement JDK 1.2).

✓ L'approche Swing est différente : une application doit fonctionner et se présenter à l'identique,
ce qu'elle que soit la plate-forme considérée.

✓ Pour ce faire, ce n'est plus l'OS qui va pixeliser les différents éléments graphiques de vos IHM,
mais bien l'API Java Swing.

✓ Donc un point très positif à utiliser Swing réside dans la richesse des composants proposés (en
nombre, largement supérieur à ceux proposés par la librairie AWT).

✓ Un autre point positif réside dans le fait que Swing ne vous propose pas un unique look
graphique : vous en avez plusieurs et ce nombre augmente progressivement (Look Nimbus,
Look Metal, …).

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 13


Interfaces graphiques en Java
Swing
✓ En Java, Swing fournit un ensemble de bibliothèques pour créer une interface graphique
(GUI), pour le faire fonctionner indépendamment sur différentes plates-formes.

✓ Swing est certainement celui qui est le plus utilisé, car ses propriétés de légèreté, contrôle et
de personnalisation facile.

✓ Avant Swing, AWT(Abstract Windowing Toolkit) est celui qui permet de créer différentes
interfaces graphiques.

✓ Cependant, en raison de ses inconvénients sur la plate-forme, lourd et peu de composants, il


a été remplacé par Java Swing, qui est intégré au package AWT.

✓ Certains composants AWT restent en Java et dans certaines situations en utilisant des
packages AWT.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 14


Interfaces graphiques en Java
Les composants Swing
✓ Les composants top-level possèdent un content pane qui contient tous les
composants visibles d’une interface.
✓ Un composant top-level peut contenir une barre de menu.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 15


Les composants Swing :
JFrame
✓ Dans Java Swing, la plupart des applications seront construites à l’intérieur d’un composant
de base appelé JFrame, qui crée une fenêtre pour contenir d’autres composants.
✓ La fonction setDefaultCloseOperation indique au frame quoi faire lorsque l’utilisateur ferme le
frame et JFrame.EXIT_ON_CLOSE; sortir quant l’utilisateur ferme le frame.
✓ setSize définit la taille du frame avec les paramètres (largeur et hauteur).
✓ La fonction setVisible et avec le paramètre « true », pour afficher l’interface GUI.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 16


Les composants Swing :
JPanel
✓ JPanel est un conteneur pour stocker différents composants.

✓ JPanel offre une meilleure organisation des composants,


de diverses dispositions.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 17


Les composants Swing :
Layout Manager
✓ Une difficulté classiquement rencontrée lors de la mise en œuvre
d'interfaces graphiques réside dans le fait de correctement
positionner les différents composants graphiques dans une zone
afin d'obtenir une sensation d'équilibre dans l'IHM (l'interface
graphique).
✓ Pour répondre à ces besoins, et pour automatiser les calculs de
positionnement et de retaillage, les librairies AWT et Swing
utilisent le concept commun de « Layout Manager »
✓ Layout Manager : Gestionnaires de positionnement, il existe
plusieurs classes de Layout Managers, chacune d'elle possédant sa
propre logique de positionnement des éléments (positionnement en
lignes, en grille, ...).
✓ La méthode setLayout. Permet d’appliquer stratégie de placement.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 18


Les composants Swing :
Layout Manager
✓ FlowLayout : pour organiser les composants ligne par ligne, les uns après
les autres (dans un flux). Il s’agit de la disposition par défaut de l’applet ou
du panneau.

✓ GridLayout : pour organiser les composants en grille rectangulaire. Un


composant est affiché dans chaque rectangle.

✓ BorderLayout est utilisé pour organiser les composants dans cinq régions:
nord, sud, est, ouest et centre. Chaque région (zone) peut contenir un seul
composant. Il s’agit de la disposition par défaut du frame ou de la fenêtre.
BorderLayout fournit cinq constantes pour chaque région.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 19


Les composants Swing :
Layout Manager
✓ BoxLayout : pour organiser les composants verticalement ou
horizontalement.

✓ GridBagLayout : est l’un des gestionnaires de mise en page les plus


flexibles et complexes fournis par la plate-forme Java. GridBagLayout
place les composants dans une grille de lignes et de colonnes, puis utilise
les tailles préférées des composants pour déterminer la taille des cellules.

✓ GroupLayout : regroupe ses composants et les place hiérarchiquement


dans un conteneur. Le regroupement est effectué par des instances de la
classe Group.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 20


Les composants Swing :
SetBounds() (without a Layout Manager)
✓ Les gestionnaires de disposition (Layout Managers) sont
utilisés pour décider automatiquement de la position et de la
taille des composants ajoutés.

✓ En l’absence d’un gestionnaire de disposition, la position et


la taille des composants doivent être définies manuellement.

✓ La méthode setBounds() est utilisée dans une telle situation


pour définir la position et la taille.
setBounds(int x, int y, int width, int height)

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 21


Les composants Swing :
JLabel
✓ JLabel est une zone pour afficher une chaîne courte ou une image ou les deux.
✓ Pour la position du label, elle pourrait être spécifiée par :
✓ JLabel.LEFT (gauche),
✓ JLabel.CENTER (centre),
✓ JLabel.RIGHT (droite).

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 22


Les composants Swing :
JTextField
✓ JTextField permet de modifier une seule ligne
de texte.
✓ JPasswordField est un composant texte
spécialisé pour la saisie de mot de passe.
✓ JTextArea représente une zone sur plusieurs
lignes qui affiche/édite du texte.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 23


Les composants Swing :
JButton
✓ JButton est un composant Boutton de Java
Swing. C’est possible de le configurer pour
avoir différentes actions, en utilisant event
listener.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 24


Les composants Swing :
Event & Listener
Classes Events Interfaces Listeners Description
✓ Event : La modification de l’état d’un objet, exp: ActionEvent ActionListener Recevoir les événements d’action
MouseEvent MouseListener Recevoir les événements de souris
cliquez sur le bouton, glisser la souris, ... KeyEvent KeyListener Recevoir les événements des touches
ItemEvent ItemListener Recevoir les événements d’élément
✓ Le package java.awt.event fournit de nombreuses TextEvent TextListener Recevoir les événements de texte
AdjustmentEvent AdjustmentListener Recevoir les événements d’ajustement
classes d’Events et interfaces de Listeners pour la WindowEvent WindowListener Recevoir les événements de l’objet window
ComponentEvent ComponentListener Recevoir les événements des composants
gestion des événements. ContainerEvent ContainerListener Recevoir les événements de conteneur

✓ Pour enregistrer un Listener sur un composant, il faut appliquer une des méthodes d’enregistrement:
✓ Classe Button : public void addActionListener ( ActionListener a ) { …. }
✓ Classe TextArea : public void addTextListener ( TextListener a ) { …. }
✓ Classe Checkbox : public void addItemListener ( ItemListener a ) { …. }
✓ Classe MenuItem : public void addActionListener ( ActionListener a ) { …. }
✓ Classe TextField : public void addTextListener ( TextListener a ) { …. }
O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 25
Les composants Swing :
Event & Listener
MOUSELISTENER KEYLISTENER

▪MouseListener est notifie en chaque modification ▪KeyListener est notifie en chaque modification de
l’état de la souris. Il est notifié contre MouseEvent. l’état d’une touche. Il est notifié contre KeyEvent.
▪L’interface MouseListener dupackage java.awt.event
admet cinq méthodes de : ▪Les trois méthodes de l’interface KeyListener du
▪ mouseClicked (MouseEvent e) package java.awt.event:
▪ mouseEntered (MouseEvent e) ➢ keyPressed (KeyEvent e)
▪ mouseExited (MouseEvent e) ➢ keyReleased (KeyEvent e)
▪ mousePressed (MouseEvent e) ➢ keyTyped (KeyEvent e)
▪ mouseReleased (MouseEvent e)

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 26


Les composants Swing :
JTextField : KeyListener
✓ JTextField est un composant Swing qui accepte un objet Listener (KeyListener).
✓ Exemple : Empêcher l’utilisateur de saisir des caractères non numérique dans un JTextField.

Plus KeyListner sur : https://runebook.dev/fr/docs/openjdk/java.desktop/java/awt/event/keyevent


O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 27
Les composants Swing :
JButton : ActionListener
✓ Java ActionListener est notifie à chaque fois que vous
cliquez sur le bouton. Il est notifié contre ActionEvent.

✓ L’interface ActionListener, du package java.awt.event, a


une seule méthode actionPerformed(). La méthode
actionPerformed() est déclenchée automatiquement chaque
fois que vous cliquez sur le bouton.

✓ Pour ajouter un ActionListener à un Jbutton, il faut placer


le code dans la méthode actionPerformed de la classe
ActionListener à exécuter lorsque le bouton est cliqué.

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 28


Les composants Swing :
JButton : ActionListener
✓ Il existe plusieurs façons d’Implémenter cela:
✓ Implémenter-le dans le bloc addActionListener,
✓ Demander à la classe d’implémenter un ActionListener,
✓ Créer une autre classe en tant que ActionListener.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 29


Les composants Swing :
JSpinner
✓ JSpinner contient une seule ligne
d’entrée qui peut être un nombre ou
un objet d’une séquence ordonnée.
✓ L’utilisateur peut saisir
manuellement des données dans le
champ de texte du spinner.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 30


Les composants Swing :
JSlider
✓ JSlider permet à l’utilisateur de
sélectionner une valeur en faisant
glisser le bouton en fonction de la
valeur limitée.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 31


Les composants Swing :
JRadioButton
✓ JRadioButton est un bouton radio qui
peut être sélectionné ou désélectionné. À
utiliser avec l’objet ButtonGroup pour
créer un groupe de boutons, dans lequel
un seul bouton peut être sélectionné à
la fois.
✓ La récupération est fait par :
radioi.setActionCommand("ValueI");
group.getSelection().getActionCommand()

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 32


Les composants Swing :
JComboBox
✓ JComboBox permet de
sélectionner une valeur dans une
liste déroulante. Vous pouvez
choisir un et un seul élément dans
la liste.

✓ La récupération est fait par :


cb.getSelectedItem().toString()

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 33


Les composants Swing :
JCheckBox
✓ JCheckBox est utilisé pour créer une case à
cocher, dont plusieurs cases à cocher
peuvent être sélectionnées en même temps.
✓ La méthode pour définir l’état :
checkboxi.setSelected(boolean)
✓ La méthode pour obtenir l’état :
checkboxi.isSelected() qui renvoie une
valeur booléenne.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 34


Les composants Swing :
JTable
✓ JTable est utilisé pour créer des
tables bidimensionnelles. La table
peut afficher des données à
l’intérieur. En plus, l’utilisateur peut
également modifier les données.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 35


Les composants Swing :
Jtable from DB
✓ Remplir une JTable à partir d’une
table (inscription) de la Base de
données (dbemploye).

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 36


Les composants Swing :
Jtable : Recherche dynamique
✓ Rechercher dynamique des mots dans un JTable en utilisant RowFilter pour filtrer
les résultats de la recherche.

setRowFilter(RowFilter( " …… " )) ;

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 37


Les composants Swing :
Jtable : Supprimer une ligne
✓ Ajouter ou intégrer un bouton supprimer pour chaque ligne d’un JTable dans une
cellule en personnalisant le code dans DefaultTableModel .

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 38


Les composants Swing :
Jtable : Supprimer une ligne
✓ supprimer une ligne sélectionnée d’un JTable en utilisant la méthode
removeRow() de la classe DefaultTableModel.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 39


Les composants Swing :
Jtable : Ajouter une ligne
✓ Ajouter des lignes dynamiquement dans un JTable lors d’un événement de clic sur
le bouton « + Add ».

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 40


Les composants Swing :
Jtable : Modifier une ligne
✓ Mettre à jour une ligne dans JTable lors d’un événement de clic sur le bouton « Update ».

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 41


Les composants Swing :
Jtable : Exporter en Excel
✓ Utiliser les valeurs séparées par des tabulations (TSV – Tab-Separated Values) afin de
transférer des informations du JTable vers une feuille de calcul Excel.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 42


Les composants Swing :
JMenu
✓ JMenu permet de créer un menu
déroulant.
✓ Comme, le menu Fichier, avec un sous-
menu Nouveau, Ouvrir, Enregistrer et le
menu Édition et en fin le menu Aide.

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 43


Les composants Swing :
LookAndFeel : Apparence des Applications
✓ Swing permet de personnaliser l’interface graphique en
changeant l’apparence (L&F) :
✓ Look définit l’apparence générale des composants
✓ Feel définit leur comportement. LookAndFeel="javax.swing.plaf.metal.MetalLookAndFeel";

✓ Les L&F sont des sous-classes de la classe


LookAndFeel et chaque L&F est identifié par son nom
de classe complet.
✓ Par défaut, le L&F est réglé sur Metal.
LookAndFeel="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
✓ Pour définir le L&F : appeler la méthode
setLookAndFeel() de la classe UIManager. L’appel à
setLookAndFeel doit être effectué avant l’instanciation
d’une classe Java Swing, sinon le Swing L&F par
défaut sera chargé.
LookAndFeel="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 44
Programmation
évènementielle
• G U I : I N T E R FA C E G R A P H I Q U E
• I N T E R FA C E S G R A P H I Q U E S E N J AVA :
• S W I N G / AW T
• J AVA F X
• SWT

O. ABDOUN SMI-S6 : M36-ARCHITECTURE DISTRIBUÉE 45


Interfaces graphiques en Java
• JAVAFX

O. ABDOUN M2I & MQL : INTERFACE HOMME MACHINE - IHM 46

Vous aimerez peut-être aussi