Introduction
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Introduction
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Introduction
La conception des classes Swing s'appuie assez librement sur l'architecture
MVC (Modèle/Vue/Contrôleur).
Cette architecture est apparue dans le contexte du langage Smalltalk (1980).
On y distingue pour un composant:
–Le Modèle qui gère et stocke les données (abstraites).
–Une (ou des) Vue(s)qui implante(nt) une représentation (visuelle) à partir du
modèle.
–Le Contrôleur qui se charge des interactions avec l'utilisateur et modifie le
modèle (et la ou les vues).
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Introduction
Interface graphique
Dans une interface graphique, on imbrique généralement trois niveaux d’objets
graphiques
Le conteneur principal :
• permet d’encapsuler toutes les entités des deux autres niveaux (par
exemple une fenêtre JFrame)
Un composant-conteneur intermédiaire :
• aussi un conteneur qui se charge de regrouper en son sein des
composants atomiques (par exemple un panneau JPanel)
Un composant atomique : appelé aussi widgets
• Il s’agit d’éléments de base :
boutons, zones de saisie, liste de choix déroulant…
• Ces composants sont ajoutés dans le conteneur courant en
invoquant une méthode add
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Introduction
Arborescence des packages SWING
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
La fenêtre principale : JFrame
• Les JFrame sont l'équivalent des fenêtres. Elles ont un titre, une
dimension, un aspect et des éléments graphique affichés à l'intér
ieur.
• Les JFrame font partie du package javax.swing.
• Pour créer une fenêtre graphique, on dispose, dans le paquetage
nommé javax.swing, d’une classe standard nommée JFrame,
possédant un constructeur sans arguments.
• Par exemple, avec :
• JFrame fen = new JFrame() ;
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
La fenêtre principale : JFrame
Mais, on ne se limite pas à ça car rien n’apparaîtra à l’écran
On utilisera alors :
• fen.setVisible(true);
• •pour rendre visible la fenêtre (true pour visible et false
pour caché)
• fen.setSize(x, y);
• •pour fixer la taille de la fenêtre à son ouverture
• x: taille horizontale en pixel
• y: taille verticale en pixel
fen.setTitle("Ma première fenêtre");
•pour donner un titre à la fenêtre
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
Notre Premier Exemple :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
Notre Premier Exemple :
On peut aussi-en faire une classe et l’utiliser pour créer des
objets :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
Notre Premier Exemple :
Actions sur les caractéristiques d’une fenêtre
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JFrame Les fenêtres
Notre Premier Exemple :
Actions sur les caractéristiques d’une fenêtre
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JPanel
Notre Premier Exemple :
• Pour ajouter des objets à une JFrame, on a besoin de Jpanel
• Un JPanel est en quelque sorte une boite dans laquelle on p
eut placer des composants de l'interface graphique.
• Un JPanel sert uniquement à stocker les objets
• Un Jpanel n'a pas une apparence propre et ne peut pas être
utilisé comme fenêtre autonome.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JPanel
• Exemple :
• Panel p = new Panel();
• Jlabel b = new Jlabel(“Bjr”);
• p.add(b);
• Fen.add(p);
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JPanel
• Exemple :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestionnaire de positionnement.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestionnaire de positionnement.
Le FlowLayout
• Ce premier gestionnaire est certainement le plus utilisé et le plus simple à m
anipuler.
• Des attributs de la classe FlowLayout sont préfédinis :
• FlowLayout.LEFT, FlowLayout.CENTER, FlowLayout.RIGHT .
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestionnaire de positionnement.
Le BorderLayout
• Ce second gestionnaire permet d'opérer une division de l'espace utilisable a
u sein d'un conteneur. Par opposition au FlowLayout, le nombre de zones ut
ilisable par cette stratégie est figé : un BorderLayout divise l'espace utilisabl
e en cinq zones :
• BorderLayout.NORTH
• BorderLayout.SOUTH
• BorderLayout.WEST
• BorderLayout.EAST
• BorderLayout.CENTER
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestionnaire de positionnement.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Jbutton
• JButton est un composant de Java Swing.
• La classe JButton est utilisée pour créer un bouton étiqueté ayant une
implémentation indépendante de la plateforme.
• L’application entraîne une action lorsque le bouton est cliqué. Il peut être
configuré pour avoir différentes actions, en utilisant « Event Listener ».
JButton hérite de la classe AbstractButton.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Jbutton
• JButton est un composant de Java Swing.
• La classe JButton est utilisée pour créer un bouton étiqueté ayant une
implémentation indépendante de la plateforme.
• L’application entraîne une action lorsque le bouton est cliqué. Il peut être
configuré pour avoir différentes actions, en utilisant « Event Listener ».
JButton hérite de la classe AbstractButton.
• Exemple :
• Jbutton btn = new Jbutton(‘’Entrer’’);
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Jbutton
• Les méthodes couramment utilisées de la classe JButton sont :
• void setText(String s) : Il est utilisé pour définir le texte spécifié sur le
bouton.
• String getText() : Il est utilisé pour renvoyer le texte du bouton.
• void setEnabled(boolean b) : Il est utilisé pour activer ou désactiver le
bouton.
• void setIcon(Icon b) : Il est utilisé pour définir l’icône spécifiée sur le
bouton.
• Icon getIcon() : Il est utilisé pour récupérer l’icône du bouton
• void addActionListener(ActionListener a) : Il est utilisé pour ajouter
action listener à cet objet.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JRadioButton
• Nous utilisons la classe JRadioButton pour créer un bouton radio. Le
bouton radio permet de sélectionner une option parmi plusieurs. Il est
utilisé pour remplir des formulaires, des documents d'objectifs en ligne et
des quiz.
• Nous ajoutons les boutons radio dans un ButtonGroup afin de ne pouvoir
sélectionner qu'un seul bouton radio à la fois. Nous utilisons la classe
"ButtonGroup" pour créer un groupe de boutons et y ajouter des boutons
radio.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JRadioButton
• Exemple :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JComboBox
Un JComboBox est un composant d'interface utilisateur fourni par la
bibliothèque Swing de Java, qui permet à l'utilisateur de sélectionner un
élément à partir d'une liste déroulante.
Cela peut être particulièrement utile lorsque vous souhaitez permettre à
l'utilisateur de choisir parmi plusieurs options prédéfinies.
String[] choix = {" ","Option 1", "Option 2", "Option 3", "Option 4"};
JComboBox<String> comboBox = new JComboBox<>(choix);
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JComboBox
• Exemple :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
JCheckBox
JCheckBox représente une case à cocher, qui peut être sélectionnée ou non.
Ses principales propriétés sont le texte qu'elle affiche (text) et son état
(selected).
JCheckBox case1 = new JCheckBox(“Choix x ");
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Quelques composants de base
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Quelques composants de base
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• Les composants Swing créent des événements, soit directement, soit par
une action de l'utilisateur sur le composant. Ces événements peuvent
déclencher une action exécutée par d'autre(s) composant(s).
• Un composant qui crée des événements est appelé source. Le composant
source délègue le traitement de l'événement au composant auditeur.
• Un composant qui traite un événement est appelé auditeur (listener)
• Un composant auditeur doit s'inscrire auprès du composant source des
événements qu'il veut traiter.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
•
La gestion des événements est essentielle dans les applications Java
Swing pour répondre aux interactions de l'utilisateur.
• Écouteurs d'événements : Les événements sont générés lorsque
l'utilisateur interagit avec les composants Swing, tels que les boutons,
les cases à cocher, les champs de texte, etc. Pour gérer ces événements,
vous devez ajouter des écouteurs d'événements aux composants. Les
écouteurs d'événements sont des classes qui implémentent des
interfaces spécifiques telles que ActionListener, MouseListener,
ItemListener, etc., en fonction du type d'événement que vous souhaitez
gérer.
• Ajout d'écouteurs : Pour ajouter un écouteur à un composant, vous
utilisez des méthodes telles que addActionListener, addMouseListener,
addItemListener, etc., en fonction de l'événement que vous souhaitez
gérer
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
Swing définit un grand nombre de types d'auditeurs, en fonction du type
d'événement qu'ils écoutent. Les principaux types d'auditeurs sont :
–les auditeurs d'action (action listeners),
– les auditeurs de souris (mouse listeners),
– les auditeurs de menu (menu listeners),
– les auditeurs de clavier (key listeners),
– les auditeurs de cible de saisie (focus listeners).
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• ActionListener
• L'interface (fonctionnelle) ActionListener représente un
auditeur à l'écoute des événements de type « action ». Ces
événements se produisent p.ex. lorsque l'utilisateur clique
sur un bouton, sélectionne un menu ou presse Entrée
dans un champ textuel.
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• ActionListener
• Exemple 1
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• Exercice 1
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• Exercice 1
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• ActionListener
• Exemple 2
• Il est possible d'enregistrer un même listener pour
plusieurs composants
• getSource() permet d'obtenir le composant ayant créé
l'évènement
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• ActionListener
• Exemple 2
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évenements
• Exemple 3 : JRadioButton Event
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évenements
• Exemple 4 : JCombobox Event
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI
Gestion des évènements
• Exercice 1
Ecrire une application java/Swing permettant la conversion euros -> Dirhams
et inversement. L’apparence de cette application est donnée par la figure
suivante :
Sup MTI Oujda 2023/2024 Pr . Yassine AZIZI