0% ont trouvé ce document utile (0 vote)
61 vues14 pages

Cours de Programmation

Le document présente un cours sur la programmation graphique et événementielle avec Java, couvrant des modules tels que l'introduction à la programmation graphique, la gestion des événements et les composants graphiques de base. Il explique les concepts de programmation graphique et événementielle, ainsi que l'utilisation de bibliothèques Java pour faciliter le développement d'applications interactives. Le document détaille également la structure d'une classe principale et les instructions d'affichage en Java, ainsi que les principaux composants Swing utilisés pour créer des interfaces graphiques.

Transféré par

jeremie Paswa
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)
61 vues14 pages

Cours de Programmation

Le document présente un cours sur la programmation graphique et événementielle avec Java, couvrant des modules tels que l'introduction à la programmation graphique, la gestion des événements et les composants graphiques de base. Il explique les concepts de programmation graphique et événementielle, ainsi que l'utilisation de bibliothèques Java pour faciliter le développement d'applications interactives. Le document détaille également la structure d'une classe principale et les instructions d'affichage en Java, ainsi que les principaux composants Swing utilisés pour créer des interfaces graphiques.

Transféré par

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

PLAN DU COURS : Programmation Graphique et Événementielle avec Java

Module 1 : Introduction à la Programmation Graphique

Module 2 : Composants Graphiques de Base

Module 3 : Gestion des Événements

Module 4 : Dessin Graphique et Canvas

Module 5 : Programmation Orientée Événements Avancée


MODULE 1 : INTRODUCTION A LA PROGRAMMATION GRAPHIQUE ET
EVENEMENTIELLE

La programmation graphique et événementielle sont deux concepts clés dans le


développement d'applications interactives. La programmation graphique concerne la
création et la manipulation d'éléments visuels (images, formes, texte) à l'écran. La
programmation événementielle, quant à elle, repose sur la gestion des actions de
l'utilisateur (clics de souris, frappes au clavier, etc.) ou d'autres événements (minuteur,
mise à jour de données) pour déclencher des réactions du programme.
Programmation Graphique
La programmation graphique permet de créer des interfaces utilisateur (GUI)
riches et interactives. Elle implique l'utilisation de bibliothèques graphiques pour dessiner
des formes, afficher des images, gérer le texte, et organiser ces éléments dans des fenêtres
et des conteneurs. En essence, la programmation graphique transforme des données
numériques en une représentation visuelle à l'écran.
La programmation graphique consiste à développer des interfaces graphiques
utilisateur (GUI) permettant d'interagir avec une application à travers des éléments
visuels (boutons, champs de texte, menus, etc.), contrairement à la programmation en
mode console.

Exemples :

 Applications de bureau (ex : éditeur de texte, lecteur multimédia)


 Jeux 2D
 Interfaces de configuration ou de gestion

Programmation Événementielle
La programmation événementielle est un paradigme où le programme réagit aux
actions de l'utilisateur ou à d'autres événements. Un "événement" peut être un clic de
souris, une touche pressée, une mise à jour de données, ou tout autre changement d'état
dans l'application. Le programmeur définit des "gestionnaires d'événements" qui sont des
fonctions ou des procédures spécifiques exécutées lorsqu'un événement particulier se
produit.
Interaction des deux concepts
Dans de nombreuses applications, la programmation graphique et événementielle
sont étroitement liées. Par exemple, un clic de souris sur un bouton dans une interface
graphique est un événement qui peut déclencher une action dans le code, comme
l'ouverture d'une nouvelle fenêtre ou le traitement d'une donnée. Les interfaces graphiques
modernes reposent sur la programmation événementielle pour permettre aux utilisateurs
d'interagir avec les éléments visuels affichés à l'écran.
Exemple simple
Un exemple courant est un bouton dans une application. Le bouton est un élément
graphique que l'utilisateur peut voir. L'action de cliquer sur ce bouton est un
événement. Le programmeur va définir un gestionnaire d'événements qui sera exécuté
lorsque le bouton sera cliqué, ce qui pourrait déclencher une action comme l'affichage d'un
message ou le lancement d'une autre partie de l'application.
En résumé, la programmation graphique crée l'aspect visuel, tandis que la
programmation événementielle permet à l'utilisateur d'interagir avec cet aspect visuel,
rendant l'application dynamique et interactive.
NOTION DE BIBLIOTHEQUE

1. Définition :

Une bibliothèque Java (ou Java Library) est un ensemble de classes, d'interfaces,
d'énumérations et de méthodes regroupées pour effectuer des tâches spécifiques.

Elle permet de ne pas réinventer la roue : plutôt que de coder chaque fonctionnalité à
partir de zéro, on réutilise du code déjà testé, optimisé et documenté.

2. Types de bibliothèques
Type Description Exemples

Bibliothèques
Fournies par défaut avec le JDK [Link], [Link],
standard (API Java
(Java Development Kit) [Link], [Link]
SE)

Développées par la communauté ou Apache Commons,


Bibliothèques des entreprises tierces, à intégrer au JUnit, Gson, JavaFX
externes (tiers) projet manuellement ou via un (à partir de Java 11),
gestionnaire de dépendances etc.

3. Structure et importation

➤ Organisation :

Les bibliothèques sont organisées en packages (dossiers logiques).


Exemple :

 [Link] → Contient les classes d‟outils comme ArrayList, HashMap, etc.


 [Link] → Contient les classes de l‟interface graphique Swing (JFrame, JButton,
etc.)

➤ Importation dans le code :

java
import [Link]; // importation d'une classe spécifique
import [Link].*; // importation de toutes les classes du package util
4. Bibliothèques standard utiles (Java SE)
Package Utilité
[Link] Classes de base (String, Math, Object, System…)
[Link] Collections, dates, événements, etc.
[Link] Entrée/sortie de fichiers
[Link] Interfaces graphiques avec Swing
[Link] Interfaces graphiques bas niveau
Package Utilité
[Link] Communication réseau
[Link] Connexion aux bases de données

5. Bibliothèques pour interfaces graphiques

Bibliothèque Description Niveau


Ancienne bibliothèque graphique native,
AWT ([Link]) Basique
simple
Swing ([Link]) Plus moderne, portable, composants riches Recommandé
Interface moderne avec animations, CSS,
JavaFX Avancé
multimédia

6. Bibliothèques tierces populaires

Bibliothèque Utilité
Fonctions utilitaires générales (fichiers, chaînes,
Apache Commons
etc.)
Gson / Jackson Manipulation de JSON
JUnit Tests unitaires
JFreeChart Graphiques et courbes
Lombok Réduction du code répétitif (constructeurs, getters…)

2. STRUCTURE D’UNE CLASSE PRINCIPALE

Un programme java est toujours à l‟intérieur d‟une classe. Une application peut
comprendre plusieurs classes dont une seule est principale. La classe principale est celle
qui contient une méthode spéciale appelée main par laquelle commence l‟exécution de
l‟application.
La structure de cette classe est donc la suivante :
public class NomDeLaClasse{
public static void main(String[] args){
instructions;
}
}
Les crochets [] peuvent être concaténés à args :
public class NomDeLaClasse{
public static void main(String args[]){
instructions;
}
}
Le nom de la classe doit être précisé par le programmeur. Java est sensible à la
casse, c‟est-à-dire, il distingue les caractères majuscules des caractères minuscules.
La classe doit être enregistrée dans un fichier texte du même nom (tout en
respectant la classe) que la classe avec l‟extension .java.
Chaque instruction Java se termine par un point-virgule (;) et peut aller au-delà
d‟une ligne tout comme une ligne peut contenir plusieurs instructions séparées par des
points-virgules.
1.2. INSTRUCTIONS D’AFFICHAGE
 [Link]()
Affiche dans la fenêtre de commande Dos le paramètre précisé dans les
parenthèses et place le curseur de sortie à la droite du paramètre affiché.

 [Link]()
Affiche dans la fenêtre de commande Dos le paramètre précisé dans les
parenthèses et place le curseur de sortie au début de la ligne suivante.

 [Link]()
Affiche dans une boite de message le paramètre précisé dans les parenthèses.
L‟utilisation de cette instruction nécessite une importation préalable de la classe
JOptionPane avec l‟instruction :

import [Link] ; Ou simplement import [Link].* ;

La méthode showMessageDialog() de la classe JOptionPane possède quatre


arguments qui se suivent en ordre :

- La position de la boîte de message à l‟écran. Le mot clé null signifie que la boîte
sera au centre de l‟écran.
- Le paramètre à afficher.
- Un texte qui sera affiché dans la barre de titre de la boîte de message.
- Une des constantes de JOptionPane suivantes indiquant le type de message.
o JOptionPane.PLAIN_MESSAGE
o JOptionPane.INFORMATION_MESSAGE
o JOptionPane.ERROR_MESSAGE
o JOptionPane.WARNING_MESSAGE

1.3. CARACTERES D’ECHAPPEMENT

Les chaînes de caractères à afficher peuvent contenir des caractères


d‟échappement suivants :
\n : Nouvelle ligne
\t : Tabulation
\\ : Barre renversée (\)
\‟ : Guillemet simple („)
\„‟ : Double guillemet (‟‟)

1.4. OPERATEUR DE CONCATENATION

Une même instruction d‟affichage peut concerner plusieurs arguments pourvu


qu‟ils soient concaténés par l‟opérateur de concaténation (+)
Exemples
Voici en pratique
les instructions d‟affichage
en langage de programmation Java.

Le texte suivant peut être affiché exactement comme tel par trois instructions
d‟affichage :
public class Exemple1{
public static void main(String ars[]){
[Link](“Voici en pratique”);
[Link](“les instructions d\‟affichage ”);
[Link](“en langage de programmation Java ”);
}
}
Ou par une seule instruction d‟affichage contenant des caractères d‟échappement
et des opérateurs de concaténation :

public class Exemple2{


public static void main(String ars[]){
[Link](“Voici en pratique\nles instructions ” + “d‟affichage\n en langage de
” + “programmation Java”);
}
}
On peut aussi afficher avec la classe JOptionPane :

import [Link].* ;
public class Exemple3{
public static void main(String ars[]){
[Link](null,“Voici en pratique\nles instructions ” +
“d‟affichage\nen langage de ” + “programmation Java”, “Exemple3”,
JOptionPane.PLAIN_MESSAGE );
[Link](0);
}
}
Remarque : l‟utilisation des éléments de GUI (Graphical User Interface – Interface
Graphique Utilisateur) comme les fenêtres, les boîtes de dialogue ou de message.
MODULE 2 : LES PRINCIPAUX COMPOSANTS DE BASE DE JAVA

Les composants graphiques Swing sont conçus comme des conteneurs.


D‟ailleurs, ils héritent indirectement de la classe AWT Container. Cela signifie qu‟une
instance de JFrame (une fenêtre) contient des composants graphiques qui eux-mêmes
peuvent contenir des composants graphiques, etc, etc. Donc on peut imaginer une interface
graphique sous la forme d‟un arbre dont la racine est constituée par une instance
de JFrame. Pour ajouter un composant graphique dans un autre composant graphique, on
peut utiliser une des méthodes add héritées de Container. On peut également supprimer
un composant d‟un autre avec la méthode [Link] ou [Link].

Parmi les composants graphiques les plus couramment utilisés en Swing, on


trouve :

 JPanel : Ce composant n‟a pas de représentation graphique proprement dite. Il


sert à grouper des composants dans une arborescence de composants graphiques.

 JLabel : Ce composant représente une zone de texte ou une image à afficher.


Généralement, il est utilisé pour afficher des textes cours. Une instance de JLabel ne
réagit pas aux événements (notamment de type clavier). Il est conçu pour fournir un
libellé ou une icône pour un champ de saisi (d‟où son nom).

 JTextField : Ce composant représente une champ texte éditable par l‟utilisateur.

 JTextArea : Ce composant représente une zone de texte éditable par l‟utilisateur.


Le JTextArea est plus adapté que le JTextField lorsqu‟on veut représenter du texte
sur plusieurs lignes.

 JEditorPane : Ce composant correspond à un éditeur de texte riche. Il peut


afficher du texte avec des informations de formatage (comme des balises). Par
défaut, il supporte le texte brut (text/plain), le HTML (text/html) et le RTF
(text/rtf).

 JCheckBox : Ce composant correspond à une case à cocher.

 JRadioButton : Ce composant représente un bouton radio.

 JComboBox : Ce composant fait apparaître une liste de choix que l‟utilisateur peut
sélectionner. La JComboBox supporte la sélection unique ou la multi sélection.

 JProgressBar : Ce composant dessine une barre de progression.

 JButton : Ce composant représente un bouton.

 JSeparator : Ce composant affiche un trait pour marquer une séparation entre


deux composants.

 JSpinner : Ce composant affiche une boite de saisie avec deux flèches (une vers le
haut et une vers le bas). Il s‟agit le plus souvent d‟afficher un nombre et de donner la
possibilité à l‟utilisateur d‟incrémenter ou de décrémenter ce nombre en cliquant
sur les flèches.
 JTabbedPane : Ce composant permet d‟afficher plusieurs onglets. Chaque onglet
contient un composant Swing.

2.1. LA PRESENTATION DE SWING

Swing propose de nombreux composants dont certains possèdent des fonctions


étendues, une utilisation des mécanismes de gestion d'événements performants (ceux
introduits par le JDK 1.1) et une apparence modifiable à la volée (une interface graphique
qui emploie le style du système d'exploitation Windows ou Motif ou un nouveau style
spécifique à Java nommé Metal).

Tous les éléments de Swing font partie d'un package qui a changé plusieurs fois
de nom : le nom du package dépend de la version du J.D.K. utilisée :
 [Link] : jusqu'à la version 1.1 beta 2 de Swing, de la version 1.1 des JFC
et de la version 1.2 beta 4 du J.D.K.
 [Link] : utilisé par le J.D.K. 1.2 beta 2 et 3
 [Link] : à partir des versions de Swing 1.1 beta 3 et J.D.K. 1.2 RC1

Les composants Swing forment un nouvelle hiérarchie parallèle à celle de


l'AWT. L'ancêtre de cette hiérarchie est le composant JComponent. Presque tous ses
composants sont écrits en pur Java : ils ne possèdent aucune partie native sauf ceux qui
assurent l'interface avec le système d'exploitation : JApplet, JDialog, JFrame, et JWindow.
Cela permet aux composants de toujours avoir la même apparence quelque soit le système
sur lequel l'application s'exécute.

Tous les composants Swing possèdent les caractéristiques suivantes :


 Ce sont des beans
 Ce sont des composants légers (pas de partie native) hormis quelques exceptions.
 Leurs bords peuvent être changés

La procédure à suivre pour utiliser un composant Swing est identique à celle des
composants de la bibliothèque AWT : créer le composant en appelant son constructeur,
appeler les méthodes du composant si nécessaire pour le personnaliser et l'ajouter dans un
conteneur.

Swing utilise la même infrastructure de classes qu'AWT, ce qui permet de


mélanger des composants Swing et AWT dans la même interface. Il est toutefois
recommandé d'éviter de les utiliser simultanément car certains peuvent ne pas être
restitués correctement.

Les composants Swing utilisent des modèles pour contenir leurs états ou leurs
données. Ces modèles sont des classes particulières qui possèdent toutes un comportement
par défaut.

1. Les packages Swing

Swing contient plusieurs packages :


2.2. Les composants Swing

Il existe des composants Swing équivalents pour chacun des composants AWT
avec des constructeurs semblables. De nombreux constructeurs acceptent comme
argument un objet de type Icon, qui représente une petite image généralement stockée au
format Gif.

A. La classe JFrame

JFrame est l'équivalent de la classe Frame de l'AWT : les principales différences


sont l'utilisation du double buffering qui améliore les rafraichissements et l'utilisation d'un
panneau de contenu (contentPane) pour insérer des composants (ils ne sont plus insérés
sans le JFrame mais dans l'objet contentPane qui lui est associé). Elle représente une
fenêtre principale qui possède un titre, une taille modifiable et éventuellement un menu.

La classe possède plusieurs constructeurs :


Le comportement par défaut à la fermeture

Il est possible de préciser comment un objet JFrame, JInternalFrame, ou


JDialog réagit à sa fermeture grâce à la méthode setDefaultCloseOperation(). Cette
méthode attend en paramètre une valeur qui peut être :

Constante Rôle
WindowConstants.DISPOSE_ON_CLOSE détruit la fenêtre
WindowConstants.DO_NOTHING_ON_CLOSE rend le bouton de fermeture inactif
WindowConstants.HIDE_ON_CLOSE cache la fenêtre

B. L'objet JPanel

Nous allons utiliser un JPanel, composant de type conteneur dont la vocation


est d'accueillir d'autres objets de même type ou des objets de type composant (boutons,
cases à cocher…).

Voici les marches à suivre :


1. Importer la classe [Link] dans notre classe héritée de JFrame.
2. Instancier un JPanel puis lui spécifier une couleur de fond pour mieux le distinguer.
3. Avertir notre JFrame que ce sera notre JPanel qui constituera son content pane.
C. LE BOUTON
D. Les étiquettes : la classe JLabel

Le composant JLabel propose les mêmes fonctionnalités que les intitulés AWT
mais ils peuvent en plus contenir des icônes.
Cette classe possède plusieurs constructeurs :

Le composant JLabel permet d'afficher un texte et/ou une icône en précisant leur
alignement. L'icône doit être au format GIF et peut être une animation dans ce format.

import [Link].*;

public class TestJLabel1 {


public static void main(String argv[]) {
JFrame f = new JFrame("ma fenetre");
[Link](100,200);

JPanel pannel = new JPanel();


JLabel jLabel1 =new JLabel("Mon texte dans JLabel");
[Link](jLabel1);

ImageIcon icone = new ImageIcon("[Link]");


JLabel jLabel2 =new JLabel(icone);
[Link](jLabel2);

JLabel jLabel3 =new JLabel("Mon texte",icone,[Link]);


[Link](jLabel3);

[Link]().add(pannel);
[Link](true);
}
}

La classe JLabel définit plusieurs méthodes pour modifier l'apparence du


composant :

Méthodes Rôle
setText() Permet d'initialiser ou de modifier le texte affiché
setOpaque() Indique si le composant est transparent (paramètre false)
ou opaque (true)
setBackground() Indique la couleur de fond du composant (setOpaque doit
être à true)
setFont() Permet de préciser la police du texte
setForeGround() Permet de préciser la couleur du texte
setHorizontalAlignment() Permet de modifier l'alignement horizontal du texte et de
l'icône

setVerticalAlignment() Permet de modifier l'alignement vertical du texte et de


l'icône
setHorizontalTextAlignment() Permet de modifier l'alignement horizontal du texte
uniquement
setVerticalTextAlignment() Permet de modifier l'alignement vertical du texte
uniquement
Exemple :
[Link]([Link]);
setIcon() Permet d'assigner une icône
setDisabledIcon() Permet de définir l'icône associée au JLabel lorsqu'il est
désactivé

L'alignement vertical par défaut d'un JLabel est centré. L'alignement horizontal
par défaut est soit à droite 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 : [Link],
[Link], [Link], [Link],
[Link]

Par défaut, un JLabel est transparent : son fond n'est pas dessiné. Pour le
dessiner, il faut utiliser la méthode setOpaque() :
import [Link].*;
public class TestJLabel2 {
public static void main(String argv[]) {
JFrame f = new JFrame("ma fenetre");
[Link](100,200);
JPanel pannel = new JPanel();

JLabel jLabel1 =new JLabel("Mon texte dans JLabel 1");


[Link]([Link]);
[Link](jLabel1);

JLabel jLabel2 =new JLabel("Mon texte dans JLabel 2");


[Link]([Link]);
[Link](true);
[Link](jLabel2);

[Link]().add(pannel);
[Link](true);
}
}

E. LES BOUTONS

Il existe plusieurs boutons définis par Swing.


Méthode Role
AddActionListener Associer un écouteur sur un événement de type
ActionEvent
AddChangeListener Associer un écouteur sur un événement de type
ChangeEvent
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
setDisabledIcon() Associer une icône affichée lorsque le composant a l'état
désélectionné
setDisabledSelectedIcon() Associer une icône affichée lors du passage de la souris
sur le composant à l'état désélectionné
setEnabled() Activer/désactiver le composant
setMnemonic() Associer un raccourci clavier
setPressedIcon() Associer une icône affichée lorsque le composant est
cliqué
setRolloverIcon() Associer une icône affichée lors du passage de la souris
sur le composant
setRolloverSelectedIcon() Associer une icône affichée lors du passage de la souris
sur le composant à l'état sélectionné
setSelectedIcon() Associer une icône affichée lorsque le composant a l'état
sélectionné
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

Vous aimerez peut-être aussi