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

Cours Swing

Le document présente les interfaces graphiques en Java en utilisant la bibliothèque Swing, qui inclut des composants, des conteneurs, et des gestionnaires de placement. Il décrit les différents types de composants (comme JButton, JLabel, JTextField) et conteneurs (comme JFrame, JPanel), ainsi que les gestionnaires d'événements pour interagir avec l'utilisateur. Enfin, il explique comment positionner les composants à l'aide de gestionnaires de placement tels que FlowLayout, GridLayout et BorderLayout.

Transféré par

jamel18081982
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)
87 vues14 pages

Cours Swing

Le document présente les interfaces graphiques en Java en utilisant la bibliothèque Swing, qui inclut des composants, des conteneurs, et des gestionnaires de placement. Il décrit les différents types de composants (comme JButton, JLabel, JTextField) et conteneurs (comme JFrame, JPanel), ainsi que les gestionnaires d'événements pour interagir avec l'utilisateur. Enfin, il explique comment positionner les composants à l'aide de gestionnaires de placement tels que FlowLayout, GridLayout et BorderLayout.

Transféré par

jamel18081982
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

Les interfaces graphiques en Java 1

Chapitre 3 :

Les interfaces graphiques en Java


(avec Swing)

1. Présentation de Swing

Swing : une bibliothèque de création des interfaces graphiques.


Swing existe depuis Java 1.1
Deux packages sont utilisées pour créer les interfaces graphiques : [Link] , [Link]
La construction des interfaces graphiques est basée sur 4 éléments :
- Les composants : des boutons, des textes, des images, …
- Les conteneurs : sont des composants qui sont capables d’accueillir d’autres
composants (des fenêtres)
- Le gestionnaire de positionnement : permet de gérer le positionnement des
composants dans l’interface graphique
- Le gestionnaire des évènements : sert à gérer les actions des utilisateurs sur
l’interface qui peuvent modifier le comportement du programme.

2. Les composants de Swing

Les composants de Swing héritent tous de la classe JComponent.


Les méthodes les plus utiles de la classe JComponent sont :
- add : utilisée pour ajouter un composant à un conteneur
- setLocation : permet de positionner le composant graphique dans l’écran
- setSize : fixe la taille d’un composant
- setToolTipText : affiche un texte qui présente le rôle du composant.
 
Exemple de JToolTip (les infobulles) :

JButton bouton = new JButton("Valider") ;


[Link](" En cliquant sur le bouton, vous validez
les informations saisies");
Les interfaces graphiques en Java 2

2.1. Les conteneurs primaires


Un conteneur primaire représente le cadre de l’interface.
Un conteneur primaire doit exister dans toute interface graphique.
On s’intéresse à 3 types de conteneurs primaires : JWindow, JFrame et JDialog.
 
JWindow :
Une fenêtre basique sans aucune bordure et aucun bouton (pas de bouton de fermeture ou de
redimensionnement).

Exemple 1 :

JWindow window = new


JWindow(); [Link](300,
200); [Link](true);

 
JFrame :
Une fenêtre qui contient une bordure, une barre de titre, un bouton de fermeture, un bouton de
redimensionnement et un bouton pour la réduire.

Exemple 2 :

JFrame fenetre = new JFrame();


[Link](300 ,300);
[Link]("ma fenêtre");
[Link]( true);
[Link](JFrame.EXIT_ON_CLOSE)
;

Remarque 1 :

Lors du lancement de l’application, une fenêtre qui est créée n’est pas affichée par défaut, elle
est lancée en arrière plan (cachée). Pour l’afficher à l’écran, il faut utiliser la méthode
setVisible(true).

Remarque 2 :

Lorsqu’on clique sur l’icône de fermeture d’une fenêtre, celle-ci n’est pas fermée mais cachée
(comme si on a appelé setVisible(false)). Pour fermer la fenêtre, on fait appel à l’instruction
suivante :
[Link](JFrame.EXIT_ON_CLOSE);

 
Les boites de dialogues :

C’est une boite de dialogue qui permet de communiquer rapidement avec l’utilisateur.
Généralement, on les utilise pour afficher un message à l’utilisateur. La classe JOptionPane
Les interfaces graphiques en Java 3

permet de créer plusieurs types de boites de dialogues. On distingue 3 types de boites de


dialogue :

- Les dialogues de messages :


Elles contiennent un message sous forme de texte et un bouton de confirmation.
Exemple 3 :

[Link](null,"Problème
de réseau","Connexion au réseau
impossible.",JOptionPane.WARNING_MESSAGE);

- Les dialogues de confirmation/question :


Elles servent à demander un renseignement à l’utilisateur.
Exemple 4 :

[Link](fenetre,"Aimez
vous Java ?");

- Les dialogues de saisie :


Elles comprennent une entrée de saisie et des boutons de validation.
Exemple 5 :

String rep = [Link](null,"


Entrez votre nom d’utilisateur");

2.2. Les conteneurs secondaires


Ces composants servent à regrouper d’autres composants. Les principaux panneaux secondaires
sont :
 
Le panneau : JPanel

C’est le conteneur le plus simple de Swing. Pour utiliser un panneau, il faut l’inclure dans une
fenêtre (un JFrame par exemple).
Pour ajouter un composant à un JPanel, on utilise la méthode add.
Pour enlever un composant du JPanel, on utilise la méthode remove.
Exemple 6 :
JPanel panel = new JPanel();
JLabel label = new JLabel("mon
bouton"); [Link](label);
Les interfaces graphiques en Java 4

Remarque :

Une fenêtre se compose d’une barre de menu (JMenuBar) et d’un panneau conteneur
(ContentPane). Le ContentPane est de type JPanel. Les composants graphiques sont ajoutés dans
le ContentPane.

Figure 1 : Structure d'un JFrame

Pour ajouter des composants à une fenêtre, on défini un nouveau ContentPane (de type JPanel),
on y place les composants, puis on utilise la méthode setContentPane de la classe JFrame en lui
entrant le JPanel ainsi créé.

Exemple 7 :
JFrame fenetre=new JFrame();
JPanel panel=new JPanel();
JButton bouton = new JButton("Mon bouton");
[Link](bouton);
[Link](panel);

 
Le panneau à défilement : JScrollPane

JScrollPane permet d’afficher une partie du contenu (par exemple, si on a un texte long ou une
image de grande taille). Ce conteneur ne peut contenir qu’un seul composant.
Exemple 8 :

JFrame fenetre=new JFrame();


[Link](400 ,300);
JLabel monImage = new JLabel();
[Link](new ImageIcon("[Link]"));
JScrollPane panel=new JScrollPane(monImage);
[Link](panel);

 
Le panneau à onglets : JTabbedPane

Il permet de créer des interfaces en utilisant des onglets. La méthode addTab permet d’ajouter
un composant dans un nouvel onglet. Généralement, on ajoute un conteneur JPanel à chaque
onglet.
Les interfaces graphiques en Java 5

Exemple 9 :
JFrame fenetre=new JFrame();
[Link] (400 ,300);

JPanel panel1=new JPanel();


JPanel panel2=new JPanel();

JTabbedPane tabbedpane=new JTabbedPane();


[Link]("onglet1", panel1);
[Link]("onglet2", panel2);

[Link](tabbedpane)
; [Link](true);

2.3. Les composants atomiques


Ce sont les composants élémentaires de Swing : les boutons, les labels, les zones de texte, …
 
Les boutons : JButton
Pour créer un bouton, on appelle le constructeur JButton :
JButton bouton = new JButton("mon bouton");

 
Les labels : JLabel
Un label est une simple chaine de caractère. La construction d’un label se fait comme ceci :
JLabel label = new JLabel("mon label");

 
Les champs de saisie : JTextField

Ils sont utilisés pour saisir une seule ligne de texte. On peut fixer la largeur du champ de saisie
par appel de la méthode setColumns(int).

JTextField champ = new JTextField();


[Link](10);

 
Les zones de texte : JTextArea

Sert à afficher un texte sur plusieurs lignes. Pour remplir la zone de texte, on utilise la méthode
setText.

JTextArea zone_texte = new JTextArea();


zone_texte.setText("Texte long..........................\n ....................................\n
................................. \n....................................\n");

 
Les cases à cocher : JCheckBox

JCheckBox présente une case à cocher. Grâce à ce composant, l’utilisateur peut cocher plusieurs
cases en même temps (plusieurs choix possibles). La méthode setSelected(true) permet de
mettre la case cochée dès sa création.
Les interfaces graphiques en Java 6

JCheckBox chBox1=new JCheckBox("choix 1");


JCheckBox chBox2=new JCheckBox("choix 2");
[Link](true);

 
Les boutons radio : JRadioButton

Les boutons radio sont des boutons à choix exclusif (un seul choix en même temps). La création
des boutons radio se fait comme suit :

JRadioButton rBouton1 = new JRadioButton("Un bouton radio"); JRadioButton


rBouton2 = new JRadioButton("Un autre bouton radio", true);

Pour garantir un choix exclusif entre les boutons radio, ceux-ci doivent être regroupés dans un
ButtonGroup.

ButtonGroup group=new ButtonGroup();


[Link](rBouton1);
[Link](rBouton2);

 
Les listes de choix : JList
Ce composant permet de choisir un ou plusieurs éléments parmi un ensemble prédéfini.
String[] lesElements = {"Orange", "Tunisie Telecom", "Ooredoo",
"Elissa"}; JList opérateurs = new JList(lesElements);

 
Les boites combo : JComboBox

Le composant JComboBox permet de choisir un seul élément parmi une liste d’éléments
proposés.

String[] lesElements = {"Orange", "Tunisie Telecom", "Ooredoo",


"Elissa"}; JComboBox opérateurs = new JComboBox(lesElements);

 
Les menus : JMenuBar, JMenu, JMenuItem

Il est possible d’ajouter une barre de menu (composant JMenuBar) à une fenêtre à l’aide de la
méthode setJMenuBar. À une barre de menu, on peut ajouter assez de menus que l’on veut
(composant JMenu). Et chaque menu (JMenu) comporte plusieurs éléments (JMenuItem).

JMenu

JMenuBar
JMenuItem
Les interfaces graphiques en Java 7

JFrame fenetre = new JFrame();

JMenuBar menubar=new JMenuBar();


JMenu menu1=new JMenu("Fichier");
JMenu menu2=new JMenu("Edition");

JMenuItem menuFichierNouveau = new JMenuItem(" Nouveau


"); JMenuItem menuFichierOuvrir = new JMenuItem(" Ouvrir
"); [Link](menuFichierNouveau);
[Link](menuFichierOuvrir);

JMenuItem menuEditionCouper = new JMenuItem(" Couper


"); JMenuItem menuEditionCopier = new JMenuItem("
Copier "); JMenuItem menuEditionColler = new
JMenuItem(" Coller "); [Link](menuEditionCouper);
[Link](menuEditionCopier);
[Link](menuEditionColler);

[Link](menu1);
[Link](menu2);

[Link](menubar);

Exemple d’interface graphique :

JTextField
JLabel

JComboBox

JRadioButto

JTextArea

JCheckBox

JList

JButton
Les interfaces graphiques en Java 8

3. Le gestionnaire de placement

Le gestionnaire de placement permet de gérer le positionnement des composants graphiques


dans un conteneur.

Un gestionnaire de placement implémente l’interface LayoutManager. On s’intéresse dans ce


cours à 3 gestionnaires : FlowLayout, GridLayout et BorderLayout.

À chaque conteneur est associé un gestionnaire de placement par défaut. Pour modifier le
gestionnaire de placement d’un conteneur, on utilise la méthode setLayout(). On met un
gestionnaire de type LayoutManager ou d’une de ses sous-classes comme argument de la
méthode setLayout().

Exemple :
JPanel panel=new JPanel();
FlowLayout fl=new FlowLayout();
[Link](fl);

Le gestionnaire par défaut de JPanel est FlowLayout. Le gestionnaire par défaut de JFrame est
BorderLayout.

3.1. FlowLayout
Il place les composants de gauche à droite et de haut en bas. Donc, il remplit une ligne, puis
passe à la suivante.

Exemple 10 :

JPanel panel=new JPanel();


FlowLayout fl=new FlowLayout();
[Link](fl);
[Link](new JButton("un"));
[Link](new JButton("deux"));
[Link](new JButton("trois"));
[Link](new JButton("quatre"));
[Link](new JButton("cinq"));
[Link](new JButton("six"));

3.2. BorderLayout

Ce gestionnaire divise le conteneur en 5 zones : le centre (CENTER), le haut (NORTH), le bas


(SOUTH), la droite (EAST) et le gauche (WEST). La figure ci-dessous présente l’emplacement de
ces zones.
Les interfaces graphiques en Java 9

Exemple 11 :
JPanel panel=new JPanel();
BorderLayout bl=new BorderLayout();
[Link](bl);

JButton un=new JButton("Un");


JButton deux=new JButton("Deux");
JButton trois=new JButton("Trois");
JButton quatre=new JButton("Quatre");
JButton cinq=new JButton("Cinq");

[Link](un, [Link]);
[Link](deux, [Link]);
[Link](trois, [Link]);
[Link](quatre, [Link]);
[Link](cinq, [Link]);

Remarque :

Il n’est pas obligatoire d’utiliser les cinq zones ; les zones qui ne sont pas utilisées seront
ignorées.

Exemple 12 :
JPanel panel=new JPanel();
BorderLayout bl=new BorderLayout();
[Link](bl);

JButton un=new JButton("Un");


JButton trois=new JButton("Trois");
JButton cinq=new JButton("Cinq");

[Link](un, [Link]);
[Link](trois, [Link]);
[Link](cinq, [Link]);

3.3. GridLayout

Ce gestionnaire place les composants sur une grille définie par un nombre de lignes et un
nombre de colonnes. Par exemple, si on appelle le constructeur new GridLayout(3,2), on
obtient une grille de 3 lignes et 2 colonnes.
Les interfaces graphiques en Java 10

Exemple 13 :
JPanel panel=new JPanel();
GridLayout gl=new GridLayout(3,2);
[Link](gl);

JButton un=new JButton("un");


JButton deux=new JButton("deux");
JButton trois=new JButton("trois");
JButton quatre=new JButton("quatre");
JButton cinq=new JButton("cinq");

[Link](un);
[Link](deux);
[Link](trois);
[Link](quatre);
[Link](cinq);

4. La gestion des évènements

4.1. Principe de la gestion des évènements

Les actions de l’utilisateur sur l’interface graphique peuvent générer des évènements. Par
exemple, un clic sur un bouton, la sélection d’un menu, …

Le composant qui subit une action de l’utilisateur déclenche un évènement. Ce composant


s’appelle la source de l’évènement. Il envoie l’objet évènement à un ou plusieurs objets
(récepteurs d’évènements). Ceux-ci s’appellent auditeurs ou écouteurs (en anglais listeners).

Pour utiliser les évènements et les écouteurs, on importe les deux packages : [Link] et
[Link] .

2 L’utilisateur agit sur


un composant

1
s’enregistre auprès de
Composant Récepteur d’évènement
Source d’évènement (XXXListener)
envoie un évènement
4

le récepteur traite l’évènement


6
3
déclenche un évènement
5
détermine la source de l’évènement
(getSource())
L’évènement
(XXXEvent)
Les interfaces graphiques en Java 11

Le mécanisme de gestion des évènements est :

1. L’auditeur (listener) doit s’enregistrer auprès de la source afin de pouvoir écouter


l’évènement. Pour cela,
a. Cet objet doit être défini comme listener. Il doit alors implémenter l’interface
XXXListener où XXX est le type de l’évènement.
b. Il doit être enregistré auprès du composant source en utilisant la méthode
addXXXListener().
2. (et 3 et 4) Lorsque l’évènement se produit (action de l’utilisateur sur un composant), un
objet de type XXXEvent est crée et envoyé au récepteur
5. Le récepteur utilise la méthode getSource() pour savoir quel est l’objet source de
l’évènement.
6. Selon le type de la source, le récepteur réagit à l’évènement (il possède une méthode
pour traiter l’évènement)

En général, l’écouteur de l’évènement d’un composant est souvent le conteneur de ce


composant.

L’écouteur implémente une interface listener. Il existe plusieurs types d’interfaces listener.
Chaque interface listener correspond à un type d’événement. Par exemple: dans le cas d’un clic
de bouton, l’évènement est de type ActionEvent et l’interface listener utilisée est ActionListener.

Le listener peut recevoir des évènements provenant de plusieurs sources. Donc, pour distinguer
la source de l’évènement, on appelle la méthode getSource().

4.2. Différents types d’évènements


Type Action de l’utilisateur Composant source d’évènement
d’évènement
ActionEvent clic sur un bouton, clic sur un Bouton : JButton, JCheckBox, JRadioButton
élément d’un menu Menu : JMenu, JMenuItem
Texte : JTextField
ItemEvent sélection d’un élément dans une JComboBox
liste déroulante, ou dans un JRadioButton
groupe de boutons radio ou de JCheckBox
cases à cocher
ListSelectionEvent Sélection d’un élément dans une JList
JList
ChangeEvent Un composant a changé d’état Bouton : JRadioButton, JCheckBox
Menu : JMenuItem

4.3. Les écouteurs correspondants aux évènements

Une interface écouteur permet de recevoir un évènement d’un type spécifique. Par exemple,
l’interface ActionListener permet de recevoir des évènements de type ActionEvent. Chaque
interface écouteur possède des méthodes qui doivent être implémentées afin de pouvoir traiter
l’évènement reçu. Par exemple, l’interface ActionListener possède une seule méthode
actionPerformed().
Les interfaces graphiques en Java 12

Le tableau suivant récapitule les différentes interfaces listener correspondant aux différents
types d’évènements. On donne aussi, à chaque interface, les méthodes qu’elle possède.

Objet Interface
Méthode du listener Enregistrement du listener
évènement Listener
[Link](écoute
ActionEvent ActionListener actionPerformed(ActionEvent e)
ur)
[Link](écouteu
ItemEvent ItemListener itemStateChanged(ItemEvent e)
r)
ListSelection ListSelectionList valueChanged(ListSelectionEvent [Link](
Event ener e) écouteur)
stateChanged(ChangeEvent e) [Link](écout
ChangeEvent ChangeListener
eur)

4.4. Applications

4.4.1. Exemple 1 : clic sur un bouton


Soit l’interface graphique suivante, qui possède une zone label et deux boutons :

Lorsqu’on clique sur le bouton Bouton1, le text « bouton 1 cliqué » sera écrit dans le label.
Lorsqu’on clique sur le bouton Bouton2, le text « bouton 2 cliqué » sera écrit dans le label.

Un clic sur les boutons Bouton1 et Bouton2 génère un évènement de type ActionEvent.
Les 2 boutons sont des sources d’évènement.
La fenêtre qui contient les boutons est l’auditeur (listener). Elle implémente
l’interface ActionListener.
La méthode addActionListener(ActionListener l) permet d’enregistrer l’écouteur auprès des
2 boutons.
La méthode qui permet de traiter l’évènement est actionPerformed().

1) La fenêtre doit implémenter l’interface ActionListener


public class MaFenetre extends JFrame implements ActionListener{

JLabel l1;
JButton b1, b2;

public MaFenetre(){

setSize(200,100);
setTitle("Exercice1");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel=new JPanel();


Les interfaces graphiques en Java 13

...
l1=new JLabel();
b1=new JButton("Bouton1");
b2=new JButton("Bouton2");

...
setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e)
{ // TODO Auto-generated method stub
}
}

2) L’écouteur doit être enregistré auprès du composant qui est source d’évènement

b1=new JButton("Bouton1");
[Link](this);
b2=new JButton("Bouton2");
[Link](this);

3) La méthode actionPerformed() de l’interface ActionListener doit être implémentée

public void actionPerformed(ActionEvent e) {

if([Link]()==b1)
[Link]("bouton 1 cliqué");
if([Link]()==b2)
[Link]("bouton 2 cliqué");
}

4.4.2. Exemple 2 : sélection d’un élément dans une liste déroulante

On désire réaliser une interface graphique qui contient une liste déroulante dont les éléments
sont les noms de pays. Lorsqu’on choisit un élément de la liste, le nom du pays sélectionné
s’affiche dans un label.

L’évènement généré dans ce cas est de type ItemEvent. La source de l’évènement est la liste
déroulante JComboBox. La fenêtre qui contient la liste déroulante est l’auditeur (listener). Elle
implémente l’interface ItemListener.
La méthode addItemListener(ItemListener l) permet d’enregistrer l’écouteur auprès du
composant source (JComboBox).
Les interfaces graphiques en Java 14

La méthode qui permet de traiter l’évènement (sélection d’un élément) est itemStateChanged().

1) La fenêtre doit implémenter l’interface ItemListener.


Cette fenêtre contient un élément de type JComboBox et un Label pour afficher le
résultat.
Public class MaFenetre2 extends Jframe implements ItemListener{

JLabel resultat;
JComboBox cb1;

public MaFenetre2(){

setSize(200,170);
setTitle("Exercice2");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel=new JPanel();

...

String[] country={"India","USA","France"};

resultat=new JLabel();
cb1=new JComboBox(country);

...
setVisible(true);
}

@Override
public void itemStateChanged (ItemEvent e)
{ // TODO Auto-generated method stub
}
}

2) L’écouteur doit être enregistré auprès du composant qui est source d’évènement

cb1=new JComboBox(country);
[Link](this);

3) La méthode itemStateChanged() de l’interface ItemListener doit être implémentée

public void itemStateChanged(ItemEvent e) {


[Link]("Country = "+[Link]());
}

Vous aimerez peut-être aussi