0% ont trouvé ce document utile (0 vote)
97 vues34 pages

Programmation IHM avec Java Swing

Ce document présente les concepts de base de l'interaction homme-machine avec Java. Il introduit les classes Java Swing pour créer des interfaces graphiques, notamment les classes JFrame pour les fenêtres, JPanel pour les panneaux, et JLabel pour les étiquettes texte.

Transféré par

blck1406
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)
97 vues34 pages

Programmation IHM avec Java Swing

Ce document présente les concepts de base de l'interaction homme-machine avec Java. Il introduit les classes Java Swing pour créer des interfaces graphiques, notamment les classes JFrame pour les fenêtres, JPanel pour les panneaux, et JLabel pour les étiquettes texte.

Transféré par

blck1406
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

TP1 IHM

Interaction Homme Machine


3ème Année Licence (SI et ISIL)

1
Introduction
 IHM: Interaction Homme Machine est généralement réalisée à travers des interfaces graphiques
(GUI: Graphical User Interface) permettant d’assurer la communication entre l’humain et la machine.

 L’implémentation des interfaces graphiques s’appuie sur la programmation événementielle basée sur:
 La création de composants graphiques (boutons, menus, champs de saisie, …) sur une interface;
 La gestion des événements déclenchés par un utilisateur sur ces composants
 Exemples:
• Clic bouton pour quitter,
• Saisie du nom sur une zone texte pour la stocker dans une BDD,
• Choix des produits à acheter par sélection sur des cases à cocher, …

 La programmation événementielle peut être réalisée avec n’importe quel langage de programmation
en utilisant des librairies graphiques, par exemples :
 Java : - AWT (Abstract Windowing Toolkit); - Swing ; - SWT(Standard Widget Toolkit);
 C++ : Qt ;
Python : - TKinter
2
IHM en JAVA
 Java comprenait dans sa première version (1.0), seule la librairie AWT pour implémenter des
interfaces graphiques.
• L’utilisation des composants de AWT est considérée lourde puisque la création et la gestion de ces
composants sont fortement liées au système d’exploitation :
- Par exemple: l’instanciation d’un objet par Button de AWT fait appel au composant bouton du
système d’exploitation (bouton windows sous windows).

 Inconvénients de AWT:
• Problèmes de compatibilité, à titre d’exemples:
• La gestion de dispositions des composants graphiques diffèrent d’un système à un autre;
• Certains composants se comportent différemment d’un système à un autre.

 La librairie Swing:
• La librairie Swing fut apparue dans la version java (1.2) pour résoudre les problèmes liés à AWT.
• L’implémentation des interfaces graphiques avec Swing repose sur des composants purement
java, qui sont légers et simples à utiliser.
3
La librairie Swing
 Tous les composants de Java Swing descendent de la même classe => JComponent
 JComponent descend elle-même de la classe Container de AWT.
 Cette hiérarchisation permet de mettre en œuvre facilement les composants et d’en créer d’autre à
l’aide de l’héritage (proposer des méthodes communes à tous les composants).
 Tous les composants de Swing commencent par la lettre J, et se trouvent dans le paquage javax.swing.*.

4
La librairie Swing

5
La librairie Swing
 La création d’une interface graphique, avec Java Swing, repose sur les
quatre éléments principaux suivants:

 Une fenêtre (Frame) : qui est créée en utilisant la classe JFrame;

 Des panneau (Panel) : contenant tous les boutons, les champs textuels et
autres composants. Ils sont créés à l’aide de la classe JPanel.

 Des composants graphiques : tels que les boutons (JButton), une zone
de texte (JTextField), …etc. Les interactions sur ces composants sont
gérées et contrôlées via des méthodes prédéfinies ou créées (Gestion des
événements).

 Des gestionnaire de disposition (LayoutManager): permettent


d’organiser tous les composants graphiques sur un panneau (panel)

6
La classe JFrame
 Les applications graphiques sont principalement construites à partir de la classe
de base JFrame. Cette dernière permet de construire une fenêtre comportant une
bordure, un titre, une taille et une localisation sur ecran.
 Les méthodes de la classe Jframe permettent de choisir les propriétés de la
fenêtre:
Exemples:
 Ajouter le titre de la fenêtre: setTitle(String title);
 Dimensionner la fenêtre(x, y: taille en pixel): setSize(int x, int y);
 Interdire ou autoriser le redimensionnement de la fenêtre selon la valeur de
x (true ou false ): setResizable(boolean x);
 Positionner la fenêtre au centre de l'écran
setLocationRelativeTo(null);
 Visualiser ou cacher la fenetre: setVisible(boolean x);
 Arreter le processus d'exectution en fermant la fenêtre par la croix:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7
La classe JFrame

 Remarque:
 Pour situer la fenêtre sur une position bien définie de l’écran, il suffit
d’appliquer la méthode setLocation(int X, int Y).
 Les coordonnées (x,y), exprimées en pixels, sont basées sur un repère,
dont O l'origine est représentée par le coin supérieur gauche.

- les valeurs de X positives déplacent la fenêtre vers la


droite tandis que les négatives la font sortir de l'écran
par la gauche.
- Les valeurs positives de Y font descendre la fenêtre
depuis l'origine tandis que les négatives la font sortir
par le haut de l'écran.

8
La classe JFrame
 Exemple 1:

import javax.swing.JFrame;
public class MyFrame extends JFrame{ //Etendre la classe JFrame
public MyFrame() {
this.setTitle("Titre de la fenêtre ");
this.setSize(800, 600);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

public static void main(String[] str){


MyFrame fenetre1 =new MyFrame();
}
} 9
La classe JFrame
 Exemple 2:
import javax.swing.* ;
public class MyFrame {
public static void main(String args[]){
JFrame fenetre1 = new JFrame() ;
fenetre1.setTitle("Titre de la fenêtre ");
fenetre1.setSize(800, 600);
fenetre1.setResizable(false);
fenetre1.setLocationRelativeTo(null);
fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

fenetre1.setVisible(true);

}
}

10
La classe JFrame
 Résultat

11
La classe JFrame

Ajouter un contenu

 Les éléments de l’IHM sont placés dans des panneaux (Jpanel de Swing)

 Nous pouvons utiliser le panneau par défaut d’une fenêtre JFrame (pour
le récupérer, appeler la méthode getContentPane() de la classe JFrame ,
pour le remplir, appeler la méthode add() de la classe JPanel)

 Il est possible d’instancier la classe JPanel qui a pour but d'accueillir


d'autres objets (boutons, cases à cocher…)

12
La classe JFrame
 Exemple 1: (utiliser le panneau par défaut)
import javax.swing.* ;
public class MyFrame extends JFrame{ //Etendre la classe JFrame
public static void main(String args[])){
JFrame fenetre1 = new JFrame() ;
fenetre1.setTitle("Titre de la fenêtre ");
fenetre1.setSize(800, 600);
fenetre1.setResizable(false);
fenetre1.setLocationRelativeTo(null);
fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel texte = new JLabel("Hello World");

fenetre1.getContentPane().add(texte); /* ajouter texte


dans le panneau par défaut */
fenetre1.setVisible(true);
}
} 13
La classe JFrame
 Résultat

14
La classe JFrame
 Exemple 2: (Instancier la classe JPanel)
import javax.swing.* ;
public class MyFrame extends JFrame{ //Etendre la classe JFrame
public static void main(String args[]){
JFrame fenetre1 = new JFrame() ;
fenetre1.setTitle("Titre de la fenêtre ");
fenetre1.setSize(800, 600);
fenetre1.setResizable(false);
fenetre1.setLocationRelativeTo(null);
fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel texte = new JLabel("Hello World");


JPanel panel = new JPanel();
panel.setBackground(Color.ORANGE);
panel.add(texte);
fenetre1.setContentPane(panel);
fenetre1.setVisible(true);
} 15
La classe JFrame
 Résultat

16
Les principaux composants graphiques

JLabel
 La classe JLabel peut afficher du texte, une image ou les deux.

Constructeurs de la classe
Principales méthodes
Constructeur Description
Crée une instance JLabel sans image Méthodes Description
JLabel()
et avec une chaîne vide pour le titre.
Renvoie le texte que
Crée une instance JLabel avec l'image String getText()
JLabel(Icon image) l'étiquette affiche.
spécifiée.
void setText(String text) Définit le texte à afficher.
Crée une instance JLabel avec le texte
JLabel(String text)
spécifié.
JLabel(String text, Icon Crée une instance de JLabel avec le
icon, int texte, l'image et l'alignement
horizontalAlignment) horizontal spécifiés.
17
Les principaux composants graphiques

JLabel
 Exemple:

Font font1 = new Font ("Garamond", Font.ITALIC, 25); //Définir police+style


JLabel label=new JLabel(); //Instanciation d'un objet par JLabel
label.setFont(font1); //Lui Associer le Font
label.setForeground(Color.black); //Couleur de l’écriture
label.setPreferredSize(new Dimension(50,25)); //Redimensionner la taille
label.setText("Message"); //Le texte de libellé
label.setHorizontalAlignment(JLabel.CENTER);//AlignementHorizontale centrée

18
Les principaux composants graphiques

JButton
 La classe JButton est une implémentation d'un bouton poussoir. Ce composant a
une étiquette et génère un événement lorsqu'il est pressé. Il peut également
avoir une image.

Constructeur Description
JButton() Crée un bouton sans texte ni icône.
JButton(Icon icon) Crée un bouton avec une icône.
JButton(String text) Crée un bouton avec un texte.
JButton(String text, Icon icon) Crée un bouton avec un texte et une icône.

19
Les principaux composants graphiques

JButton
 Exemple:
private JButton bouton=new JButton("OK");
bouton.setPreferredSize(new Dimension(100,50)); //redimensionner le bouton
bouton.setToolTipText("Appuyez sur OK"); //InfoBulle
bouton.setMnemonic('o'); //Raccourcis clavier (alt+'o')

20
Les principaux composants graphiques
JCheckBox
 La classe JCheckBox est une implémentation d'une case à cocher - un élément qui peut être
sélectionné ou désélectionné, et qui affiche son état à l'utilisateur.
Constructeur Description

JCheckBox() Crée une case à cocher sans texte ni icône.

JCheckBox(Icon icon) Crée une case à cocher avec une icône.


Crée une case à cocher avec une icône et spécifie si elle est initialement
JCheckBox(Icon, boolean)
sélectionnée ou non.
JCheckBox(String) Crée une case à cocher avec du texte.
Crée une case à cocher avec un texte et spécifie s'il est initialement
JCheckBox(String, boolean)
sélectionné ou non.

JCheckBox(String, Icon) Crée une case à cocher avec le texte et l'icône spécifiés.

Crée une case à cocher avec du texte et une icône et spécifie si elle est
JCheckBox(String, Icon, boolean)
initialement sélectionnée ou non.
21
Les principaux composants graphiques

JCheckBox
 Exemple:

JCheckBox jCheckBox1 = new JCheckBox("Produit1");


JCheckBox jCheckBox2 = new JCheckBox("Produit2");
JCheckBox jCheckBox3 = new JCheckBox("Produit3");

jCheckBox1.setMnemonic('p');
jCheckBox2.setMnemonic('r');
jCheckBox3.setMnemonic('d');

22
Les principaux composants graphiques

JRadioButton
 La classe JRadioButton est une implémentation d'un bouton radio - un élément qui
peut être sélectionné ou désélectionné, et qui affiche son état à l'utilisateur.
Constructeur Description
JRadioButton() Crée un bouton radio sans texte.
JRadioButton(Icon) Crée un bouton radio avec l'image spécifiée mais sans texte
Crée un bouton radio avec l'image et l'état de sélection spécifiés, mais pas de
JRadioButton(Icon, boolean)
texte.
JRadioButton(String, boolean) Crée un bouton radio avec le texte et l'état de sélection spécifiés.
Crée un bouton radio contenant le texte et l'image spécifiés et qui est
JRadioButton(String, Icon)
initialement désélectionné.
JRadioButton(String, Icon, Crée un bouton radio qui a le texte, l'image et l'état de sélection spécifiés.
boolean)
23
Les principaux composants graphiques

JRadioButton
 Exemple:
JRadioButton jRadioButton1 = new JRadioButton("Produit1", true);
JRadioButton jRadioButton2 = new JRadioButton("Produit2");
JRadioButton jRadioButton3 = new JRadioButton("Produit3");

jRadioButton1.setMnemonic('p');
jRadioButton2.setMnemonic('r');
jRadioButton3.setMnemonic('d');

//Group the radio buttons.


ButtonGroup group = new ButtonGroup();

group.add(jRadioButton1);
group.add(jRadioButton2);
group.add(jRadioButton3);
24
Les principaux composants graphiques

JComboBox
 La classe JComboBox est un composant qui combine un bouton ou champ
éditable et une liste déroulante.

Constructeur Description
Crée une JComboBox avec un modèle de données par
JComboBox()
défaut.
Crée un JComboBox qui contient les éléments du tableau
JComboBox(Object[] items)
spécifié.

25
Les principaux composants graphiques

JComboBox

Méthode Description
int getItemCount() Renvoie le nombre d'éléments de la liste.
int getSelectedIndex() Renvoie l‘indice de l’élément actuellement sélectionné.
Object getSelectedItem() Renvoie l'élément actuellement sélectionné.
void setEditable(boolean aFlag) Détermine si le champ JComboBox est modifiable.
void setEnabled(boolean b) Active le ComboBox afin que les éléments puissent être sélectionnés.
void setSelectedIndex(int anIndex) Sélectionne l'élément à l'index anIndex.
Définit l'élément sélectionné dans la zone d'affichage ComboBox sur
void setSelectedItem(Object anObject)
l'objet dans l'argument.

26
Les principaux composants graphiques

JComboBox
 Exemple:
DefaultComboBoxModel specialite = new DefaultComboBoxModel();
specialite.addElement("SI");
specialite.addElement("ISIL");
specialite.addElement("LPDWI");
specialite.addElement("TI");
JComboBox specialiteCombo = new JComboBox(specialite);
specialiteCombo.setSelectedIndex(0);

27
Les principaux composants graphiques

JTextField
 La classe JTextField est un composant qui permet l'édition d'une seule ligne de texte.

Constructor & Description


JTextField() Crée un nouveau TextField.
JTextField(int columns) Crée un nouveau TextField vide avec le nombre de colonnes spécifié.
JTextField(String text) Crée un nouveau TextField initialisé avec le texte spécifié.
JTextField(String text, int columns) Crée un nouveau TextField initialisé avec le texte et les colonnes spécifiés.

Méthode Description

String getText() Renvoie le texte contenue dans le champ JTextField.

void setText(String text) Définit le texte à afficher.

void setFont(Font f) Définit la police.


28
Les principaux composants graphiques

JTextField
 Exemple

JTextField textField = new JTextField(15);


textField.setText("Algérie"); // Ajouter un text
textField.setHorizontalAlignment(JTextField.CENTER); //Aligner l'écriture au centre

29
Les principaux composants graphiques

JPasswordField
 La classe JPasswordField est un composant spécialisé dans la gestion de la fonctionnalité de mot
de passe et permettant l'édition d'une seule ligne de texte.

Constructeur Description
JPasswordField() Construit un nouveau JPasswordField, avec un texte nulle et une largeur de 0.
JPasswordField(int columns) Construit un nouveau JPasswordField vide avec le nombre de colonnes spécifié.
JPasswordField(String text) Construit un nouveau JPasswordField initialisé avec le texte spécifié.
JPasswordField(String, int) Construit un JPasswordField initialisé avec le texte et les colonnes spécifiés.

Méthode Description
char[] getPassword() Renvoie le texte contenu dans ce champs.
String getText() Obsolète. À partir de la plate-forme Java 2 v1.2, remplacé par getPassword.
30
Les principaux composants graphiques

JTextArea
 La classe JTextArea est une zone multiligne pour afficher du texte.
Constructeur Description
JTextArea() Construit un nouveau TextArea.
Construit un nouveau TextArea vide avec le nombre spécifié de
JTextArea(int rows, int columns)
lignes et de colonnes.
JTextArea(String text) Construit un nouveau TextArea avec le texte spécifié affiché.
Construit un nouveau TextArea avec le texte spécifié et le nombre
JTextArea(String text, int rows, int columns)
de lignes et de colonnes.

Méthode Description

void setColumns(int columns) Définit le nombre de colonnes pour ce TextArea.

void setFont(Font f) Définit la police.


void setRows(int rows) Définit le nombre de lignes pour ce TextArea.
31
Les principaux composants graphiques

Exercice:
 En utilisant les composants vues précédemment, créez une interface graphique qui permet à un
étudiant d’introduire ses informations pour une inscription

32
Les LayoutManager

Gestion des évènements

33
Bibliographie
 REZOUG A. , TP IHM, dep. Informatique, UMBB.
 ABBAS A. , TP IHM, dep. Informatique, Université de Bouira.
 https://www.tutorialspoint.com/java/index.htm
 https://www.tutorialspoint.com/swing/index.htm
 https://docs.oracle.com/javase/tutorial/uiswing/
 https://www.guru99.com/java-swing-gui.html
 https://www.tutorialspoint.com/swing/swing_controls.htm

34

Vous aimerez peut-être aussi