Interface graphique
SWING
ISET BIZERTE
CHALOUAH Anissa
Interfaces graphiques
Les interfaces graphiques assurent le dialogue entre les utilisateurs et une application.
Une interface graphique est formée d’une ou plusieurs fenêtres qui contiennent divers
composants graphiques (widgets) tels que :
Boutons
listes déroulantes
Menus
champ texte, …etc.
Les interfaces graphiques sont souvent appelés GUI d’après l’anglais GraphicalUser
Interface.
Mme CHALOUAH Anissa
3
Modèle d’une application graphique
Une application graphique est composée de 3 éléments:
Les composants graphiques élémentaires de l’application (Boutons, menu, Etiquettes,
zones de textes, zones de choix, …). Ce sont les widgets.
Le conteneur graphique global qui est une zone spatiale sur laquelle les composants
les
les conteneurs on distingue les Fenêtres,
les Frames,
sont placés. Parmi
panneaux, les boîtes de dialogues…
Le gestionnaire de présentation, dit LayoutManager, qui fixe la politique de placement
les gestionnaires, on distingue le
des composants sur le conteneur. Parmi
FlowLayout, BorderLayout, le GridLayout, …
Mme CHALOUAH Anissa
4
Les APIs
Plusieurs packages permettent de gérer les interfaces graphiques : AWT et SWING
(intégré à partir de la version 1.2).
AWT utilise des composants lourds, c'est à dire utilisant les ressources du système
d'exploitation, alors que Swing utilise des composants dits légers n'utilisant pas ces
ressources.
Swing est plus robuste que l'AWT, plus portable, et plus facile à utiliser.
Swing ne remplace pas complètement AWT mais fournit des composants d'interface plus
performants et plus ergonomiques.
Mme CHALOUAH Anissa
5
Concepts de bases
Les composants (components)
Les éléments constituant les interfaces graphiques sont appelés composants (ce sont des boutons, des
textes, des images, ...).
Les conteneurs (containers)
Certains composants sont capables d’en accueillir d’autres, ce sont les conteneurs.
les conteneurs sont des descendants de la classe Container.
Les gestionnaires de placement(Layouts)
Le placement des composants dans les container est souvent confié à un gestionnaire de placement.
Les gestionnaires d’évènements
Les actions de l’utilisateur sont représentées par des événements.
Le programme peut modifier son comportement en fonction de certains événements.
Méthodes de la classe Component
setVisible(boolean visible) affiche ou masque le composant
getSize() donne la dimension actuelle du composant, retourne le type Dimension qui est utilisable ainsi :
getSize().height et getSize().width
getPreferedSize() donne la taille "idéale" du composant, retourne le type Dimension
setSize(Dimension d) redimensionne le composant à la dimension indiquée
setSize(int largeur, int hauteur) redimensionne le composant
move(int coordX, int coordY) déplace le composant au point indiqué (coin haut et gauche)
setEnabled(boolean actif) active ou non le composant, c'est à dire le rend sensible aux
événements.
setForeground(Color couleur) définit la couleur d'avant-plan (de dessin) du composant
setBackground(Color couleur) définit la couleur de fond
Mme CHALOUAH Anissa
7
Conteneur
(Container)
Hiérarchie
Les conteneurs primaires
(Top-Level containers)
►Les conteneurs primaires sont les seuls composants qui sont
dessinés par le système d’exploitation, ce sont donc des
composants lourds.
►Toute application graphique doit utiliser un conteneur
primaire.
►Trois types de conteneurs primaires existent :
► les fenêtres (JFrame et Jwindow)
► les boites de dialogues (JDialog)
► les applets (JApplet)
Les conteneurs primaires
(Top-Level containers)
Les quatre conteneurs primaires sont construit sur le même modèle.
La couche supérieure est un le GlassPane, un panneau transparent qui est utilisé
pour la gestion des évènements.
Sous ce panneau se situe le contentPane qui accueille les composants graphiques.
Le contentPane contient aussi une barre de menu, accessible via la méthode
setJMenuBar,
Il est contenu par le LayeredPane qui peut être utilisé pour empiler des composants
à des “profondeurs” différentes.
Tous ces éléments sont contenu dans un élément principal de type JRootPane.
JWindow
La classe JWindow permet de créer une fenêtre graphique dans le système de fenêtrage
utilisée.
Cette fenêtre n’a aucune bordure et aucun bouton. Elle ne peut être fermée que par le
programme qui l’a construite
import javax. swing. JWindow ;
public class TestJWindow {
public static void main( String [] args) {
JWindow fen = new JWindow ();
fen.setSize (300 ,300);
fen.setLocation(500 ,500);
fen.setVisible( true);
}
}
Fenêtre : JFrame
Publicité
Conteneur d'une application avec barre de titre et des boutons de fermeture, plein
écran, iconification.
Importer la classe javax. swing. JFrame ;
Constructeur
JFrame()
JFrame(String)
Rôle
Création d'une instance
Création d'une instance en précisant le titre
Fenêtre : JFrame
Méthode
setTitle(String titre)
String getTitle()
void setIconImage(Image img)
setMenuBar(MenuBar)
setResizable(boolean)
Rôle
spécifie le titre du cadre
Obtient le titre du cadre
définit l'image qu'il faut afficher quand ce cadre
est iconifié
applique une barre de menu en haut du cadre
définit la possibilité pour l'utilisateur de
modifier la taille de la fenêtre
Les événements générés par le composant JFrame sont : WindowOpened,
WindowClosing, WindowClosed, WindowIconified, WindowDeiconified,
WindowActivated, WindowDeactivated.
JFrame : 2 manières de créer une JFrame
import javax. swing. JFrame ;
public class MaFenetre {
import javax. swing. JFrame ;
public class MaFenetre extends JFrame {
public MaFenetre(){
public MaFenetre(){
JFrame fen = new JFrame ("Ma première fenêtre");
fen . setSize (500 ,200);
fen . setVisible( true);
fen . setLocation(500 ,500);
}
public static void main( String [] args) {
MaFenetre f=new MaFenetre();
}
}
super ("Ma première fenêtre");
setSize (500 ,200);
setVisible( true);
setLocation(500 ,500);
}
public static void main( String [] args) {
MaFenetre f=new MaFenetre();
}
}
JDialog
Boites de dialogue : JOptionPane(1)
Le composant complexe JOptionPane permet de créer une fenêtre de dialogue
(fenêtre séparée ou pop-up) qui servira à afficher un message ou à obtenir des
informations de la part de l'utilisateur.
La classe JOptionPane crée automatiquement un conteneur de haut niveau JDialog
pour afficher les informations et recevoir les réponses de l'utilisateur.
Une fenêtre JOptionPane comprend 4 zones (optionnelles)
Message
Icône
Entrée
Bouton
Boites de dialogue : JOptionPane (2)
Les fenêtres de dialogue peuvent être divisées en quatre catégories différentes :
Message : Affichage d'un message d'information
Input : Saisie d'une information entrée par l'utilisateur
Confirm : Demande de confirmation (Ok, Oui, Non, Annulation)
Option : Choix d'une option spécifique (parmi une liste de boutons)
Les méthodes statiques showTypDialog() créent des fenêtres de dialogue de haut-niveau. Ces
fenêtres sont modales (ce qui signifie que le focus ne peut pas être transféré à un composant d'une
autre fenêtre de l'application sans fermer la fenêtre de dialogue).
Le premier paramètre (de toutes les méthodes showTypDialog()) indique à quel composant (parent) la
fenêtre de dialogue est liée ce qui détermine sa dépendance et son positionnement (si null, la fenêtre
est centrée à l'écran).
Boites de dialogues
JOptionPane : message
Ce sont les boites de dialogue les plus simple, elles informent l’utilisateur en affichant un
texte simple et un bouton de confirmation.
JOptionPane.showMessageDialog(fen,"Un message");
On peut modifier l’aspect de la fenêtre en fonction du type de message, par exemple pour
afficher un dialogue d’avertissement :
JOptionPane.showMessageDialog(fen,"Problème de réseau",
"Connexion au réseau impossible.",JOptionPane.WARNING_MESSAGE);
Boites de dialogues
JOptionPane : input
La méthode showInputDialog affiche une boite de dialogue comprenant une entrée de
saisie (JTextField) en plus des boutons de validation.
Après validation elle retourne une chaîne de caractères (String) si l’utilisateur a cliqué
sur OK, sinon elle renvoie null.
String rep = JOptionPane. showInputDialog(fen," Entrez votre nom d utilisateur");
Boites de dialogues
JOptionPane : confirm
Les boites de dialogues peuvent aussi être utilisées pour demander un renseignement à
l’utilisateur.
Les méthodes showConfirmDialog() affichent des fenêtres qui comportent des boutons de
type Cancel", "Yes", "No" (différentes combinaisons sont possibles sur la base des
constantes (option type)
Définies dans la classe JOptionPane. Ces méthodes retournent une valeur entière
correspondant à une des constantes de JOptionPane (CANCEL_OPTION, CLOSED_OPTION,
NO_OPTION, YES_OPTION, OK_OPTION).
int i=JOptionPane.showConfirmDialog(fen,"Choisir une réponse");
if (i==JOptionPane.YES_OPTION) {...}
Boites de dialogues
JOptionPane : option
Les méthodes showOptionDialog() permettent de transmettre un tableau d'objets qui
seront affichés sous forme deboutons (ils remplacent les boutons standard de
showConfirmDialog()).
Publicité
Ces méthodes retournent une valeur entière correspondant à l'indice du tableau
identifiant l'objet qui a été sélectionné (ou CLOSED_OPTION).
String[] tab = {"Froid", "Tiède", "Chaud"};
int i = JOptionPane.showOptionDialog(fen,"Vos préférences ?", "Options"
,JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE, null,
Type d’option : pas utilisé si options définies
tab, tab[1]);
Type de message : question
icône
Valeur
initiale
Les conteneurs secondaires
Les composants
(component)
Les étiquettes : JLabel
Les étiquettes sont des composants graphiques capables d'afficher un texte et/ou une
image
Importer javax.swing.JLabel
Constructeurs
JLabel()
JLabel(Icon)
JLabel(Icon, int)
JLabel(String)
JLabel(String, Icon, int)
JLabel(String, int)
Rôle
Création d'une instance sans texte ni image
Création d'une instance en précisant l'image
Création d'une instance en précisant l'image et l'alignement
horizontal
Création d'une instance en précisant le texte
Création d'une instance en précisant le texte, l'image et
l'alignement horizontal
Création d'une instance en précisant le texte et l'alignement
horizontal
Jlabel : Exemple
JLabel l1 = new JLabel("Etiquette 1");
JLabel l2 = new JLabel( ); l2.setText("Etiquette 2");
JLabel l3 = new JLabel("Etiquette et image", new ImageIcon("/img/duke.gif"),JLabel.CENTER );
Les boutons : JButton
Le composant JButton permet d'afficher un bouton qui peut comprendre un texte
(libellé), une icône (image) ou les deux à la fois.
Importer javax.swing.JButton
Constructeur
JButton()
JButton(String)
JButton(Icon)
JButton(String, Icon)
Rôle
préciser le texte du bouton
préciser une icône
préciser un texte et une icône
Un bouton permet donc de déclencher des actions (activités).
Jbutton : Exemple
JButton bt1 = new JButton("Text only");
JButton bt2 = new JButton(new ImageIcon("icone.png"));
JButton bt3 = new JButton("Text and icon",new ImageIcon("icone.png"));
Les cases à cocher : JCheckBox
Le composant JCheckBox est une sous-classe de JToggleButton et représente une case à cocher qui
peut prendre deux états (sélectionné/non-sélectionné).
L'utilisation des composants JCheckBox permet de saisir un certain nombre d'options parmi une liste
de choix non-exclusifs.
Importer javax.swing.JCheckBox
Constructeur
JCheckBox(String)
JCheckBox(String, boolean)
JCheckBox(Icon)
JCheckBox(Icon, boolean)
JCheckBox(String, Icon)
JCheckBox(String, Icon, boolean)
Rôle
précise l'intitulé
précise l'intitulé et l'état
spécifie l'icône utilisée
précise l'intitulé et l'état du bouton
précise l'intitulé et l'icône
précise l'intitulé, une icône et l'état
JCheckBox : Exemple
Méthodes
boolean isSelected() : retourne true si la case est sélectionnée, false sinon,
Void setSelected(boolean) : permet de modifier l’état d’une case à cocher
JCheckBox c1 = new JCheckBox("Pomme ");
JCheckBox c2 = new JCheckBox(" Orange", true);
JCheckBox c3 = new JCheckBox("Raisin ");
pan.add(c1);
pan.add(c2);
pan.add(c3);
if (c1.isSelected()==true)
System.out.println("Pomme séléctionnée");
else if (c2.isSelected()==true)
System.out.println("Orange séléctionnée");
else
System.out.println("Raisin séléctionné");
Les boutons radio : JRadioButton
Les boutons radio JRadioButton sont des boutons à choix exclusif, il permettent de choisir un (et un
seul) élément parmi un ensemble.
Pour obtenir ce comportement, il suffit d'insérer les composants JRadioButton (mutuellement
exclusifs) dans un groupe de boutons représenté par un objet de la classe ButtonGroup.
Importer javax.swing.JRadioButton
Constructeur
JRadioButton(String)
JRadioButton(String, boolean)
JRadioButton(Icon)
JRadioButton(String, Icon)
JRadioButton(String, Icon, boolean)
Rôle
précise l'intitulé du bouton radio
précise l'intitulé et l'état
spécifie l'icône utilisée
Publicité
précise l'intitulé et l'icône
précise l'intitulé, une icône et l'état
ButtonGroup
La classe ButtonGroup permet de grouper (logiquement) des boutons qui sont
enregistrés dans le groupe à l'aide de la méthode add().
Si un bouton est inséré dans un groupe de boutons, la sélection de l'un d'eux
provoquera automatiquement la désélection de tous les autres membres du groupe
(permet de garantir une seule sélection parmi un choix d'options mutuellement
exclusives).
En principe, l'insertion dans un groupe de boutons devrait être réservée exclusivement
aux boutons de type JRadioButton.
ButtonGroup & JRadioButton : Exemple
public class TestRadio extends JPanel {
JRadioButton plat1 , plat2 , plat3;
ButtonGroup plat;
public TestRadio(){
plat1 = new JRadioButton("Tajine");
plat2 = new JRadioButton(" couscous");
plat3 = new JRadioButton(" Mechoui ",true);
plat = new ButtonGroup();
plat.add ( plat1);
plat.add ( plat2);
plat.add ( plat3);
this.add ( plat1);
this.add ( plat2);
this.add ( plat3);
this. setBorder( BorderFactory.
createTitledBorder(" Plat du jour"));
};
}
public class PlatDuJour{
public static void main( String [] args) {
JFrame fen = new JFrame ("Exemple de boutons radios"
TestRadio panneau = new TestRadio();
fen. setContentPane( panneau );
fen. pack ();
fen. setVisible( true);
}
}
Les listes de choix : JList
Le composant JList permet de présenter à l'utilisateur une liste d'éléments parmi
lesquels il peut en sélectionner un ou plusieurs.
Le composant JList affiche en permanence le contenu de la liste. Si tous les éléments ne
peuvent être affichés, il faut offrir une barre de défilement (JScrollPane) pour parcourir
les éléments de la liste
Les champs textes : JTextField
Un composant pour afficher, saisir et éditer une ligne de texte simple.
Importer javax.swing.JTextField
Constructeur
JTextField()
JTextField(int)
JTextField(String)
JTextField(String,int)
Méthodes :
Rôle
Création d’un champ texte
spécification du nombre de caractères à saisir
avec texte par défaut
avec texte par défaut et nombre de caractères à saisir.
String getText( ) : lecture de la chaine saisie.
Void setColumns () : Fixer la largeur du champ
int getColumns( ) : lecture du nombre de caractères prédéfini
JTextField : Exemple
JPanel pan = new JPanel ();
JLabel lNom = new JLabel (" Entrez votre nom :");
JTextField tfNom = new JTextField();
tfNom. setColumns(15);
pan .add ( lNom);
pan .add ( tfNom);
Zone texte : JTextArea
Le composant JTextArea permet d’afficher un texte sur plusieurs lignes
Importer javax.swing.JTextArea
Constructeur
JTextArea()
JTextArea( int, int )
JTextArea( String )
JTextArea( String, int, int )
Rôle
avec spécification du nombre de lignes et de colonnes
avec texte par défaut
avec texte par défaut et taille
Méthodes
Void setLineWrap(boolean) : gère le retour à la ligne automatique
Void setEditable (boolean) : Pour rendre la zone de texte éditable ou pas
JTextArea : Exemple
JTextArea taNotes = new JTextArea();
taNotes.setColumns(20);
taNotes.setLineWrap(true);
taNotes . setText (" ISET de Bizerte est un établissement public à caractère
scientifique et technologique. Sa principale mission consiste à contribuer au
développement socio-économique et au transfert technologique dans la région de
Bizerte ainsi que le renforcement de l'employabilité et l’insertion professionnelle
des diplômés de l’enseignement supérieur. ");
taNotes . setEditable( false );
pan .add ( taNotes );
Les gestionnaires de présentation (Layout)
Les gestionnaires de présentation
Gère la disposition des composantes filles dans un conteneur
Les gestionnaires par défaut sont
BorderLayout pour
► Window
► Frame
► Dialog
FlowLayout pour
► Panel
► Applet
Gestionnaire d’évènements