Vous êtes sur la page 1sur 29

CHAPITRE IV

TOOLKIT GRAPHIQUE
JAVA SWING

MOHAMMED BOUZIANE ILYES


Les composants atomiques
2

 Jlabel
 JTextField

 Les boutons
 Jbutton
 Jcheckbox
 JRadioButton
 JCombobox
 JList

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Les étiquettes (JLabel)
3

 Un composant de type JLabel permet


d’afficher un texte sur une seule ligne :

JLabel texte = new JLabel ("texte initial") ;


 Non modifiable par l’utilisateur.
 Modifiable par programme.

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Jlabel
4

 Le programme peut modifier à tout instant le


texte d’une étiquette à l’aide de la méthode
setText, par exemple :

JLabel texte = new JLabel ("texte initial") ;

texte.setText ("nouveau texte") ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
class Fenetre extends JFrame implements ActionListener{
private JButton bouton ;
5
private JLabel compte ;
private int nbClics ;

public Fenetre(){
setTitle ("Essais Etiquettes") ; setSize (300, 120) ;
Container contenu = getContentPane() ;
contenu.setLayout (new FlowLayout() ) ;
bouton = new JButton ("COMPTEUR") ;
bouton.addActionListener (this) ;
contenu.add(bouton) ;
nbClics = 0 ;
compte = new JLabel ("nombre de clics sur COMPTEUR = "+ nbClics) ;
contenu.add(compte) ;}
public void actionPerformed (ActionEvent e){
nbClics++ ;
compte.setText("nombre de clics sur COMPTEUR = "+nbClics) ;}
}

public class Label1{


public static void main (String args[]){ Fenetre fen = new Fenetre() ; fen.setVisible(true) ;}}
JCheckbox
6

 La case à cocher permet à l’utilisateur


d’effectuer un choix de type oui/non.
 Elle est instanciée grâce à la classe JCheckBox,
 JCheckBox coche = new JCheckBox
("choix1") ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


JCheckbox
7

 L’action de l’utilisateur sur une case à cocher


se limite à la modification de son état.
 Par défaut, une case à cocher est construite

dans l’état non coché.


 JCheckBox coche = new JCheckBox

("CASE", true) ;
 l’appel JCheckBox ("CASE") est équivalent à

l’appel JCheckBox ("CASE", false).


IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
Jcheckbox - Exploitation
8

 Réaction à l’action sur une case à cocher


 Une action de l’utilisateur sur une case à cocher génère

à la fois :
 un événement Action

 un événement Item

 Pour réagir immédiatement à un changement d’état

d’une case à cocher, on lui associera donc un écouteur


approprié :
 public void itemStateChanged (ItemEvent ev)
 public void actionPerformed (ActionEvent ev)

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Jcheckbox - Exploitation
9

 Etat d’une case à cocher


 if (case.isSelected()) {…}
 on peut, à tout instant, imposer à une case un état
donné en utilisant à la méthode setSelected :
1

case.setSelected(true) ;
case.setSelected(false) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
class FenCoches extends JFrame
10 implements ActionListener, ItemListener
{ public FenCoches ()
{ setTitle ("Exemple de cases a cocher") ;
setSize (400, 100) ;
Container contenu = getContentPane() ;
contenu.setLayout (new FlowLayout()) ;

coche1 = new JCheckBox ("case 1") ;


contenu.add(coche1) ;
coche1.addItemListener (this) ;

coche2 = new JCheckBox ("case 2") ;


contenu.add(coche2) ;
coche2.addItemListener (this) ;

etat = new JButton ("ETAT") ;


contenu.add(etat) ;
etat.addActionListener (this) ;
}
public void itemStateChanged (ItemEvent ev)
{ Object source = ev.getSource() ;
if (source == coche1) System.out.println ("action case 1") ;
11
if (source == coche2) System.out.println ("action case 2") ;
}

public void actionPerformed (ActionEvent ev)


{ System.out.println ("ETAT CASES : " + coche1.isSelected() + " "
+ coche2.isSelected()) ;
}
private JCheckBox coche1, coche2 ;
private JButton etat ;
}
public class Cases2
{ public static void main (String args[])
{ FenCoches fen = new FenCoches() ;
fen.setVisible(true) ;
}
}
JRadioButton
12

 le bouton radio permet de faire un choix de type


oui/non.
 le bouton radio appartient à un groupe de

boutons dans lequel une seule option peut être


sélectionnée à la fois.
 Le constructeur requiert obligatoirement un

libellé qui sera toujours affiché à côté de la case :


 JRadioButton bRouge = new JRadioButton ("Rouge") ;
 JRadioButton bVert = new JRadioButton ("Vert") ;
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
JRadioButton
13

 Associer des boutons radio à un groupe :


ButtonGroup groupe = new ButtonGroup() ;
groupe.add(bRouge) ;
groupe.add(bVert) ;
 On peut lui imposer l’état sélectionné en

utilisant une autre version de constructeur,


JRadioButton bRouge = new JRadioButton
("Rouge", true) ;
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing
JRadioButton - Exploitation
14

 Deux façons différentes d'exploitation :


 en réagissant immédiatement à une action sur
le bouton.
 en cherchant à connaître son état à un instant
donné.

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


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

15
class FenCoches extends JFrame implements ActionListener {
private JRadioButton radio1, radio2, radio3;

public FenCoches() {
setTitle("Exemple de boutons radio"); setSize(400, 100);
Container contenu = getContentPane(); contenu.setLayout(new FlowLayout());
contenu.setBackground(Color.RED);
ButtonGroup groupe = new ButtonGroup();
radio1 = new JRadioButton("Rouge", true);
groupe.add(radio1); contenu.add(radio1);
radio1.addActionListener(this);
radio2 = new JRadioButton("Vert");
groupe.add(radio2); contenu.add(radio2);
radio2.addActionListener(this);
radio3 = new JRadioButton("Bleue");
groupe.add(radio3); contenu.add(radio3);
radio3.addActionListener(this);}
public void actionPerformed(ActionEvent ev) {
Object source = ev.getSource();
if
16
(source == radio1)
this.getContentPane().setBackground(Color.RED);
if (source == radio2)
this.getContentPane().setBackground(Color.GREEN);
if (source == radio3)
this.getContentPane().setBackground(Color.BLUE);
}}

public class Radios {


public static void main(String args[]) {
FenCoches fen = new FenCoches();
fen.setVisible(true);
}}
JCombobox
17

 La boîte de liste combinée permet de faire un


choix.
 Construction :

String[] couleurs = {"rouge", "bleu", "gris", "vert", "jaune" } ;


JComboBox combo = new JComboBox(couleurs) ;
 rendre une boîte combo éditable par la
méthode setEditable, par exemple :
combo.setEditable(true) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Jcombobox- Construction
18

 la boîte combo sera dotée d’une barre de


defilement dès que son nombre de valeurs sera
supérieur à 8.
 On peut modifier le nombre de valeurs visibles par

la méthode setMaximumRowCount :
combo.setMaximumRowCount (4) ;
 Impose la sélection d’un élément de rang donné par

setSelectedIndex :
 combo.setSelectedIndex (2) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


JCombobox- Exploitation
19

 La méthode getSelectedItem renvoie la valeur


sélectionnée, qui est de type Object qu’il
faudra souvent convertir en chaîne :

Object valeur = combo.getSelectedItem() ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


1. import java.awt.*;
2. import java.awt.event.*;
3. import javax.swing.*;

20
4. class FenCombo extends JFrame implements ActionListener, ItemListener {
5. private String[] couleurs = { "rouge", "vert", "bleu" };
6. private JComboBox combo;

7. public FenCombo() {
8. setTitle("Essais boite combinee"); setSize(300, 200);
9. Container contenu = getContentPane(); contenu.setLayout(new FlowLayout());
10. contenu.setBackground(Color.RED);
11. combo = new JComboBox(couleurs); contenu.add(combo);
12. combo.addActionListener(this);
13. combo.addItemListener(this);
14. }

15. public void actionPerformed(ActionEvent e) {


16. System.out.print("action combo : "); Object valeur = combo.getSelectedItem();
17. System.out.println((String) valeur);
18. }
1. public void actionPerformed(ActionEvent e) {
2. System.out.print("action combo : ");
3. Object valeur = combo.getSelectedItem();
21
4. System.out.println((String) valeur);
5. }

6. public void itemStateChanged(ItemEvent e) {


7. int index = combo.getSelectedIndex();

8. switch (index) {
9. case 0 : this.getContentPane().setBackground(Color.RED);break ;
10. case 1 : this.getContentPane().setBackground(Color.GREEN);break ;
11. case 2 : this.getContentPane().setBackground(Color.BLUE);break ;
12. }}}

13. public class Combo {


14. public static void main(String args[]) {
15. FenCombo fen = new FenCombo();
16. fen.setVisible(true);
17. }}
JList
22

 Une liste est un composant qui permet de


choisir une ou plusieurs valeurs.
 On crée une boîte de liste en fournissant un

tableau de chaînes à son constructeur :

String[] couleurs = {"rouge", "bleu", "vert", } ;


JList liste = new JList (couleurs) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


JList
23

 Initialement, aucune valeur n’est sélectionnée


dans la liste.
 on peut imposer la sélection d’un élément de

rang donné par la méthode setSelectedIndex :


liste.setSelectedIndex (2) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


Jlist - types de boîtes de liste
24

Valeur du paramètre de type


Type de sélection
correspondante
SINGLE_SELECTION Sélection d’une seule valeur
SINGLE_INTERVAL_SELECT Sélection d’une seule plage de
ION valeurs (contiguës)
Sélection d’un nombre
MULTIPLE_INTERVAL_SELE
quelconque de plages de
CTION
valeurs

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


JList
25

 void setSelectionMode (int modeDeSelection)


 Le paramètre modeDeSelection est l’une des

valeurs du tableau ci-dessus.


 Exemple:

liste.setSelectionMode (SINGLE_SELECTION)
;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


JList
26

 Par défaut, la liste affiche 8 valeurs


 On peut modifier ce nombre par la méthode

setVisibleRowCount :

liste.setVisibleRowCount(3) ;

IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing


1. import java.awt.*;
2. import java.awt.event.*;
3. import javax.swing.*;
4.
27
import javax.swing.event.*;

5. class FenList extends JFrame implements ListSelectionListener {


6. private String[] couleurs = { "rouge", "bleu", "gris", "vert",
"jaune", "noir" };
7. private JList liste;

8. public FenList() {
9. setTitle("Essais boite de liste"); setSize(300, 160);
10. Container contenu = getContentPane(); contenu.setLayout(new
FlowLayout());
11. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
12. liste = new JList(couleurs);
13. contenu.add(liste);
14. liste.addListSelectionListener(this);
15. }
1. public void valueChanged(ListSelectionEvent e) {
2.
28
if (!e.getValueIsAdjusting()) {
3. System.out.println("**Action Liste - valeurs
selectionnees :");
4. Object[] valeurs = liste.getSelectedValues();
5. for (int i = 0; i < valeurs.length; i++)
6. System.out.println((String) valeurs[i]);
7. }}}

8. public class Liste {


9. public static void main(String args[]) {
10. FenList fen = new FenList();
11. fen.setVisible(true);
12. }}
29

Fin
IHM – CHAPITRE IV: Toolkit graphique JAVA -Swing