0% ont trouvé ce document utile (0 vote)
213 vues71 pages

Les Interfaces Graphiques

Transféré par

GYM ALL LIFE
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)
213 vues71 pages

Les Interfaces Graphiques

Transféré par

GYM ALL LIFE
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

Programmation orientée objet

avec java
Enseignant :
Dr. H. BENBRAHIM
Chapitre :
Les interfaces graphique

2
Interface graphique
La quasi-totalité des programmes informatiques nécessitent
• l’affichage de questions posées à l'utilisateur
• l’entrée de données par l’utilisateur au moment de l’exécution
• l’affichage d’une partie des résultats obtenus par le traitement
informatique
Cet échange d’informations peut s’effectuer avec une interface
utilisateur (UI en anglais) en mode texte (ou console) ou en mode
graphique.

3
Interface graphique
• GUI (Graphical User Interface) ou IHM (Interface Homme Machine) est une
interface graphique assure la communication entre le programme et
l’utilisateur.
• L’interface est constituée :
• d’une fenêtre principale et d’éventuellement de fenêtres secondaires
• de fenêtres de dialogue
• Une fenêtre est composée de composants graphiques (widgets) : zones
d’édition, boutons, listes déroulantes, cases à cocher, menus.
• L’utilisateur interagit avec le logiciel grâce à une souris et/ou un touchpad
et/ou le clavier, écran tactile, etc.
4
Interface graphique
• Exemple :

5
Programmation événementielle
• L’utilisateur peut interagir à tout moment avec plusieurs objets
graphiques : cliquer sur un bouton, faire un choix dans une liste
déroulante ou dans un menu, remplir un champ texte, etc…
• Ces actions peuvent modifier totalement le cheminement du
programme, sans que l’ordre d’exécution des instructions ne puisse
être prévu à l’écriture du code

6
Programmation événementielle
• Interactivité : l’utilisateur agit sur l’interface graphique.
• A chaque action est associé un événement.
• A chaque événement est associé un morceau de code.
• Dès que vous lancez un programme avec une interface graphique :
• une boucle infinie est générée.
• le programme attend les actions de l’utilisateur (enfoncer une
touche de clavier, clic souris, etc.]
• Le programme traite l’action si elle a été prévue.

7
Programmation événementielle
• Evénement : objet construit par le système en réponse à une action
de l’utilisateur et qui contient toutes les informations concernant
cette action.
• Clic souris : les coordonnées de la souris au moment du clic,
l’heure système.
• Clavier : la touche utilisée, etc.

8
Architecture MVC
• L'architecture MVC (Modèle-Vue-Contrôleur) est utilisée par Swing
pour modéliser les composants graphiques qui contiennent des
données (listes, tables, arbres,…) :
• le modèle contient les données
• les vues donnent une vue des données (ou d’une partie des
données) du modèle à l'utilisateur
• le contrôleur traite les événements reçus par le composant
graphique

9
Architecture MVC

10
Les API d’interfaces graphiques en Java
2 bibliothèques :
• AWT(Abstract Window Toolkit, JDK 1.1)
• Swing(JDK/SDK 1.2)
Swing et AWT font partie de JFC (Java Foundation Classes) qui offre
des facilités pour construire des interfaces graphiques
Swing est construit au-dessus de AWT
• même gestion des événements
• les classes de Swing héritent des classes de AWT

11
Les API d’interfaces graphiques en Java
Tous les composants de AWT ont leur équivalent dans Swing
• en plus joli
• avec plus de fonctionnalités
• Mais Swing est plus lourd et plus lent que AWT
 Swing offre de nombreux composants qui n’existent pas dans AWT
⇒Il est fortement conseillé d’utiliser les composant Swing et ce cours
sera donc centré sur Swing

12
Paquetages principaux
• AWT : java.awt et java.awt.event
• Swing : javax.swing, javax.swing.event, et tout un ensemble de sous-
paquetages de javax.swing dont les principaux sont
• liés à des composants ; table, tree, text(et ses sous-paquetages),
filechooser, colorchooser
• liés au look and feel général de l’interface (plaf= pluggablelook and
feel) ; plaf, plaf.basic, plaf.metal, plaf.windows, plaf.motif

13
Les fenêtres JFrame
• Pour une application graphique standard développée sur la machine
locale, on utilise la classe JFrame.
• Pour une applet développée pour le web, c’est la classe JApplet.
• Dans la mesure du possible, éviter le mélange des composants swing
et awt.
• Les classes Swing commencent par la lettre J

14
Composants lourds
• Pour afficher des fenêtres (instances de JFrame), Java s’appuie sur les
fenêtres fournies par le système d’exploitation hôte dans lequel
tourne la JVM
• Les composants Java qui, comme les JFrame, s’appuient sur des
composants du système hôte sont dit «lourds»
• L'utilisation de composants lourds améliore la rapiditéd'exécution
mais nuit àla portabilitéet impose les fonctionnalités des composants

15
Composants légers
• AWT utilise les widgets du système d’exploitation pour tous les
composants graphiques (fenêtres, boutons, listes, menus,…)
• Swing ne les utilise que pour les fenêtres de base «top-level»
• Les autres composants, dits légers, sont dessinés par Swing dans ces
containers lourds
• Attention, les composants lourds s’affichent toujours au-dessus des
composants légers

16
Containers lourds
• Il y a 3 sortes de containers lourds (un autre, JWindow, est plus
rarement utilisé):
• Jframe fenêtre pour les applications
• Japplet pour les applets
• Jdialog pour les fenêtres de dialogue
• Pour construire une interface graphique avec Swing, il faut créer un
(ou plusieurs) container lourd et placer à l’intérieur les composants
légers qui forment l'interface graphique

17
Hiérarchie d’héritage des containers lourds
• La hiérarchie des classes des conteneurs de niveau supérieur de
Swing ( JFrame, JDialog, JApplet) est la suivante. Ces conteneurs
Swing de niveau supérieur sont lourds et reposent sur le sous-
système de fenêtrage sous-jacent de la plate-forme native.

18
Hiérarchie d’héritage des composants légers
• La hiérarchie des
classes des de Swing
Jcomponent est la
suivante.
• Jcomponent et ses
descendants sont des
composants légers.

19
Les Fenêtres

Les Fenêtres 20
Les Fenêtres
• Jframe crée une fenêtre pour contenir d’autres composants.
• Syntaxe : Résultat :

21
Les Fenêtres
• Jdialog : Le contrôle JDialog représente une fenêtre de niveau
supérieur avec une bordure et un titre utilisé pour recevoir une
certaine forme de saisie de l'utilisateur. Il hérite de la classe Dialog.
• Contrairement à JFrame, il n'a pas de boutons d'agrandissement et de
réduction.

22
Composants texte

23
Composants texte
• JTextField : L'objet d'une classe JTextField est un composant texte qui
permet l'édition d'un texte sur une seule ligne. Il hérite de la classe
JTextComponent.

24
Composants texte
• Exemple :

25
Composants texte
• L'objet d'une classe JPasswordField est un composant texte spécialisé
pour la saisie de mots de passe. Il permet l'édition d'une seule ligne
de texte. Il hérite de la classe JTextField.

26
Composants texte
• Exemple :

27
Composants texte
• L'objet d'une classe JTextArea est une région multiligne qui affiche du
texte. Il permet l'édition de texte sur plusieurs lignes. Il hérite de la
classe JTextComponent

28
Composants texte
• Exemple :

29
Composants bouton

30
Composants bouton
• La classe JButton est utilisée pour créer un bouton étiqueté dont
l'implémentation est indépendante de la plate-forme. L'application
entraîne une action lorsque le bouton est enfoncé. Il hérite de la
classe AbstractButton.

31
Composants bouton
• Jbutton Exemple 2 :

32
Composants bouton
• La classe JCheckBox est utilisée pour créer une case à cocher. Il est
utilisé pour activer (vrai) ou désactiver (faux) une option. Cliquer sur
un CheckBox change son état de "on" à "off" ou de "off" à "on".

33
Composants bouton
• Exemple :

34
Composants bouton
• La classe JRadioButton est utilisée pour créer un bouton radio. Il est
utilisé pour choisir une option parmi plusieurs options. Il est
largement utilisé dans les systèmes d’examens ou de quiz.

35
Composants bouton
• Exemple :

36
Composants interacteur

37
Composants interacteur
• L'objet de la classe JLabel est un composant permettant de placer du
texte dans un conteneur. Il est utilisé pour afficher une seule ligne de
texte en lecture seule. Le texte peut être modifié par une application
mais un utilisateur ne peut pas le modifier directement.

38
Composants interacteur
• Exemple

39
Composants interacteur
• L'objet de la classe JList représente une liste d'éléments de texte. La
liste des éléments de texte peut être configurée de manière à ce que
l'utilisateur puisse choisir un ou plusieurs éléments. Il hérite de la
classe JComponent.

40
Composants interacteur
• Exemple :

41
Composants interacteur
• Java JComboBox est utilisé pour afficher le menu contextuel des
choix. Le choix sélectionné par l'utilisateur est affiché en haut
d'un menu . Il hérite de la classe JComponent .

42
Composants interacteur
• Exemple :

43
Conteneurs

44
Conteneurs
• Le JPanel est la classe de conteneur la plus simple. Il fournit un
espace dans lequel une application peut attacher n'importe quel
autre composant. Il hérite de la classe JComponents.

45
Conteneurs
• Exemple :

46
Conteneurs
• Un JscrollPane est utilisé pour créer une vue déroulante d'un
composant. Lorsque la taille de l'écran est limitée, nous utilisons un
volet de défilement pour afficher un composant volumineux ou un
composant dont la taille peut changer dynamiquement.

47
Conteneurs

48
Conteneurs
• Le conteneur JToolBar nous permet de regrouper d'autres
composants, généralement des boutons avec des icônes dans une
ligne ou une colonne. JToolBar fournit un composant utile pour
afficher les actions ou les contrôles couramment utilisés.

49
Conteneurs
• La classe JTree est utilisée pour afficher les données structurées en
arborescence ou les données hiérarchiques. JTree est un composant
complexe. Il a un « nœud racine » tout en haut qui est le parent de
tous les nœuds de l’arborescence. Il hérite de la classe JComponent.

50
Conteneurs
• Exemple :

51
Conteneurs
• La classe JTable est utilisée pour afficher les données sous forme de
tableau. Il est composé de lignes et de colonnes.

52
Conteneurs
• Exemple :

53
Conteneurs
• La classe JTabbedPane est utilisée pour basculer entre un groupe de
composants en cliquant sur un onglet avec un titre ou une icône
donné. Il hérite de la classe JComponent.

54
Conteneurs
• Exemple :

55
Les layout
• Les LayoutManager pour organiser votre fenêtre.
• awt.CardLayout
• awt.FlowLayout
• awt.BorderLayout
• awt.GridLayout
• awt.GridBagLayout

56
Les layout

fj.setLayout(new FlowLayout(FlowLayout.LEFT));

GridLayout gl = new GridLayout(3, 2);


setLayout(gl);

57
Les layout

pnl.setLayout(new BorderLayout());
pnl.add(jbtn1, BorderLayout.NORTH);
pnl.add(jbtn2, BorderLayout.SOUTH);
pnl.add(jbtn3, BorderLayout.WEST);
pnl.add(jbtn4, BorderLayout.EAST);
pnl.add(jbtn5, BorderLayout.CENTER);

58
Exemple Complet

import java.awt.*;
import javax.swing.*;

public class FenetreEtudiant extends JFrame{


// Les composants swing de la fenêtre
private JLabel nomLabel, prenomLabel;
private JTextField nomTextField,
prenomTextField;
private JButton supprimerButton,
modifierButton, ajouterButton;

59
public void initComponents() {
nomLabel=new JLabel("Nom: ");
prenomLabel=new JLabel("Prénom: ");
Exemple Complet nomTextField=new JTextField(10);
prenomTextField=new JTextField(10);
supprimerButton=new JButton("Supprimer");
modifierButton=new JButton("Modifier");
ajouterButton=new JButton("Ajouter");

JPanel nomPrenomPanel=new JPanel();


nomPrenomPanel.add(nomLabel);
nomPrenomPanel.add(nomTextField);
nomPrenomPanel.add(prenomLabel);
nomPrenomPanel.add(prenomTextField);

JPanel boutonsPanel=new JPanel();


boutonsPanel.add(supprimerButton);
boutonsPanel.add(modifierButton);
boutonsPanel.add(ajouterButton);

this.add(nomPrenomPanel,BorderLayout.NORTH);
this.add(boutonsPanel,BorderLayout.SOUTH);
}
} 60
Exemple Complet
public class Test {
public static void main(String[] args) {
FenetreEtudiant f1=new FenetreEtudiant();
f1.pack();
//Adapter la taille de la fenêtre à ses composants
f1.setVisible(true);}
public FenetreEtudiant() { }
this.initComponents();
this.setTitle("Etudiant en Informatique");
this.setSize(300,500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

61
Java JMenuBar, JMenu et JMenuItem
• La classe JMenuBar est utilisée pour afficher la barre de menus sur la
fenêtre ou le cadre. Il peut comporter plusieurs menus.
• L'objet de la classe JMenu est un composant de menu déroulant qui
s'affiche à partir de la barre de menus. Il hérite de la classe
JMenuItem.
• L'objet de la classe JMenuItem ajoute un simple élément de menu
étiqueté. Les éléments utilisés dans un menu doivent appartenir au
JMenuItem ou à l'une de ses sous-classes.

62
Java JMenuBar, JMenu et JMenuItem

Exemple Java JMenuItem et JMenu


Exemple de création du menu Edition

63
Java JMenuBar, JMenu et JMenuItem

64
Java JMenuBar, JMenu et JMenuItem

65
Java JOptionPane
• La classe JOptionPane est utilisée pour fournir des boîtes de dialogue
standard telles qu'une boîte de dialogue de message, une boîte de
dialogue de confirmation et une boîte de dialogue de saisie. Ces
boîtes de dialogue sont utilisées pour afficher des informations ou
obtenir des commentaires de l'utilisateur. La classe JOptionPane
hérite de la classe JComponent.

66
Java JOptionPane
• showMessageDialog()

67
Java JOptionPane
• showMessageDialog()

68
Java JOptionPane
• showMessageDialog()

69
Java JOptionPane
• showMessageDialog()

70
71

Vous aimerez peut-être aussi