Vous êtes sur la page 1sur 16

Leçon 3

Interface Homme Machine Java


Sommaire:
1.Les fenêtres
2.Affichage du texte
3.Les boutons
4.Zone de saisie
5.Les listes
6.Les menus
7.JFileChooser
8.Gestion des placements
Les fenêtres
Les variantes
Il existe plusieurs types de fenêtres dans javax.swing :
JWindow : C'est la fenêtre la plus basique. C'est juste un conteneur
que vous pouvez afficher sur votre écran. Il n'a pas de barre de
titre, pas de boutons de fermeture/redimensionnement et n'est pas
redimensionnable par défaut. Vous pouvez bien sûr lui ajouter
toutes ces fonctionnalités. On utilise surtout les JWindow pour
faire des SplashScreen, c'est-à-dire des interfaces d'attente qui se
ferment automatiquement.
JDialog : C'est une fenêtre destinée aux boîtes de dialogue. Ce type
de fenêtre peut être modal, c'est-à-dire qu'elle bloque une autre
fenêtre tant qu'elle est ouverte. Elles sont destinées à travailler de
pair avec la fenêtre principale que nous allons voir maintenant.
JFrame : C'est une fenêtre destinée à être la fenêtre principale de
votre application. Elle n'est dépendante d'aucune autre fenêtre et
ne peut pas être modale. Elle a une barre de titre et peut accueillir
une barre de menu. Elle possède un bouton de fermeture, un
bouton de redimensionnement et un bouton pour l'iconifier.
Les Fenêtres
JFrame
import javax.swing.JFrame;
public class SimpleFenetre extends JFrame{
public SimpleFenetre(){
super();
build(); //On initialise notre fenêtre
}
private void build(){
//On donne un titre à l'application
setTitle("Ma première fenêtre");
//On donne une taille à notre fenêtre
setSize(320,240);
//On centre la fenêtre sur l'écran
setLocationRelativeTo(null);
//On interdit la redimensionnement de la fenêtre
setResizable(false);
//On dit à l'application de se fermer lors du clic sur la croix
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Les fenêtres
JFrame - Exécution
public class TestJFrame {
public static void main(String[] args){
//On crée une nouvelle instance de notre JFrame
SimpleFenetre fenetre = new SimpleFenetre();
//On la rend visible
fenetre.setVisible(true);
}
}
Affichage du texte
JLabel
Importer les classes:
Import javax.swing.JPanel;
Import javax.swing.Jlabel;

Ajouter la méthode suivante à SimpleFenetre:


private JPanel buildContentPane(){
JPanel panel = new JPanel();
JLabel label = new JLabel("Bienvenue dans ma modeste
application");
panel.add(label);
return panel;
}
Ajouter l’instruction suivante à la méthode build()
setContentPane(buildContentPane());
Les boutons
Ajouter
import javax.swing.JButton;

Puis dans la méthode buildContentPane(), ajouter les


instructions suivantes:
JButton bouton = new JButton("OK");
panel.add(bouton);
JButton bouton2 = new JButton("CANCEL");
panel.add(bouton2);
Zones de saisies
Il existe plusieurs outils de saisie du texte:
 Le JTextField : C'est le plus simple des composants textes. Il
permet d'entrer un texte sur une seule ligne.
 Le JTextArea : Il permet d'entrer un texte complet sur plusieurs
lignes.
 Le JEditorPane : Très complet, vous pouvez modifier la police, la
taille, la couleur de votre texte. Il permet même d'afficher des
pages html.Vous pouvez y insérer du texte et des images.
 Le JTextPane : C'est le composant texte le plus évolué de Swing. Il
permet la même chose que le JEditorPane mais il permet
également d'insérer des composant personnalisés, c'est-à-dire que
vous pouvez y insérer des composants Swing.
Sur les composants JTextArea, JEditorPane et JTextPane, il est possible
d’ajouter les barres de défilement, de la manière suivante:
JTextArea area = new JTextArea();
JScrollPane sp = new JScrollPane(area);
Les Menus
 La classe JMenu implémente le menu déroulant
standard.
 Un menu peut contenir d’autres menus en tant
qu’éléments de sous-menus.
 Un élément de menu de base est un JMenuItem
JMenu ustensile = new JMenu("ustensiles");
ustensile.add(new JMenuItem(" Fourchette ");
ustensile.add(new JMenuItem(" Couteau ");
 La classe JMenuBar héberge des menus dans une
barre horizontale;
JMenuBar menuBar = new JMenuBar();
menuBar.add(ustensile);
 L’invocation de la méthode setJMenuBar(menuBar)
par un objet JFrame, insère la barre de menu.
JFileChooser
 Un JFileChooser est une boîte de sélection de fichiers standards.
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(parent);
if (returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: “ +
chooser.getSelectedFile().getName());
}

 Il est possible d’implémenter un filtre pour sélectionner le type de


fichier à chercher:
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("jpg");
filter.addExtension("gif");
filter.setDescription("JPG & GIF Images");
chooser.setFileFilter(filter);
Listes déroulantes
On en distingue de 2 sortes:
JList, liste déroulante assez avancée qui permet
d'afficher plusieurs éléments à la fois.
JComboBox, c'est une liste déroulante normale,
de celle que vous voyez partout dans les
applications.
Quelques méthodes associées:
 addItem(Objet item), cette méthode va ajouter un nouvel objet
à la liste
 removeItem(Objet item), cette méthode va enlever l'objet de la
liste
 removeAllItems(), cette méthode va vider la liste déroulante
 getSelectedItem(), cette méthode retourne l'objet qui est
actuellement sélectionné
Listes déroulantes
Exemple
import javax.swing.JComboBox;

Object[] elements = {"Element 1","Element 2","Element 3"};
JComboBox liste = new JComboBox(elements);
panel.add(liste);
Gestion des placements
Les gestionnaires de placements (layout)
vont s'occuper de placer correctement nos
composants dans la fenêtre en fonction des
paramètres qu'on leur a donné pour certains
et bien évidemment en fonction des
composants eux-mêmes.
Il existe de nombreux gestionnaires de layout
dans Swing, en voici quelques uns :
FlowLayout, BorderLayout, CardLayout,
GridLayout,…
Les gestionnaires de placement se trouvent
dans le paquetage java.awt.*
Gestionnaires de placement
FlowLayout
Ce gestionnaire dispose les composants les uns à la suite
des autres, sur une même ligne. Lorsqu'une ligne ne
possède plus suffisamment de place, l'affichage se poursuit
sur la ligne suivante. Chaque composant conserve sa taille
préférée. C’est le gestionnaire par défaut.

panel.setLayout(new FlowLayout());
Gestionnaires de placement
BorderLayout
Ce gestionnaire dispose les composants suivant les quatre
bords du conteneur ou au centre. BorderLayout dispose
donc cinq composants maximum dans un conteneur, deux
au bords supérieur (NORTH) et inférieur(SOUTH) à leur
hauteur préférée, deux aux bords gauche(WEST) et droit
(EAST) à leur largeur préféré, et un au centre (CENTER)
qui occupe le reste de l'espace.

panel.setLayout(new BorderLayout());
Gestionnaire de placement
GridLayout
Ce gestionnaire permet de disposer les composants
suivant une grille régulière, chaque composant ayant alors
la même taille. Il est tout à fait possible de changer de
gestionnaire de placement par défaut et d'imposer celui
qui vous convient.

panel.setLayout(new GridLayout(3,2));
Exercice
Concevoir l’interface suivante:

Vous aimerez peut-être aussi