Interfaces Graphiques en JAVA
Interfaces Graphiques en JAVA
Menu Barre
application d'outils
Zone
client Vue
fractionnée
Object
Une interface graphique en Java est un assemblage de (from lang)
conteneurs (Container) et de composants (Component).
Component
Container
3/35
Les conteneurs
Conteneurs disponibles
4/35
Les fenêtres d'application : JFrame
5/35
Les boîtes de dialogue JDialog
Un JDialog ressemble à un JFrame mais
– Il n'a pas de bouton du gestionnaire des fenêtres
permettant de l'iconiser.
– On y associe habituellement un bouton de
validation.
Un JDialog dépend d'un frame parent(qui est passé
comme premier argument au constructeur).
Un JDialog n'est pas visible lors de sa création.
Utiliser setVisible(true);
6/35
Les panneaux
●
Ce sont des conteneurs non autonomes (JPanel).
●
Ils se positionne dans une zone client d'une fenêtre.
●
Ils peuvent fournir des barres de défilement pour
manipuler une zone large (JscrollPane).
●
Un JPanel peut recevoir plusieurs composants. Ils se
placent selon le gestionnaire de placement choisi.
●
Le conteneur JscrollPane ne peut recevoir qu'un
composant.
7/35
Conteneurs et composants (2) : Frame et Panel
8/35
Composants graphiques principaux
Classe Description
Jtable Tableau
9/35
La bibliothèque Swing
10/35
Conventions de nommage
11/35
Aperçu des classes Swing (1)
JScrollPane
•Conteneurs particulier
JTabbedPane
JtoolPane JSplitlPane
JLayeredPane
JInternalPane
RootPane 12/35
Aperçu des classes Swing (2)
•Composants à usage général
JButton
JCheckBox JComboBox
JList
JSlider
JRadioButton
JMenu
JSpinner JPasswordField
JTextField
13/35
Aperçu des classes Swing (3)
•Composants interactifs
JColorChooser JFileChooser
JEditorPane ou JTextPane
JTable JTree
14/35
Aperçu des classes Swing (3)
JProgressBar
JSeparator JLabel
JToolTip
15/35
Organisation d’un écran
• Composition d’objets graphique dans des containers
• 1-déclaration du container
• 2-insertion des composants dans le container
• 1) Déclaration du composant
• 2) Insertion du composant dans son container
... b 1 JButton
2
2 2
1
17/35
Exemple de composants swing
JMenuBar
JLabel JTextField
JComboBox
JList
JCheckBox
18/35
Conteneurs et composants (4) : utilisation
19/35
Gestionnaire de placement (1)
20/35
Gestionnaire de placement (2)
●
La méthode setLayout(layoutManager) définie dans les
conteneurs permet de changer le gestionnaire par
défaut
●
Un gestionnaire par défaut est défini pour chaque
conteneur
●
Il est possible de choisir un autre gestionnaire de
présentation pour un conteneur donnée
●
La méthode pack() déclenche le calcul du placement
●
La méthode invalidate() rend le placement courant
invalide et donc le redimentionnement des composants
à l'intérieur de celui-ci
21/35
Gestionnaire de placement (3)
●
FlowLayout
Place les composants de
gauche à droite
●
CardLayout
Superpose les composants
●
GridLayout
Découpe en une grille
régulière sur laquelle les
composants sont placés
GridBagLayout
Découpe en une grille et place les
composants sur une ou plusieurs cases
22/35
Gestionnaire de placement (4)
●
BorderLayout
Découpe l'espace en 5 régions :
centre, est, ouest, sud et nord
• SpringLayout
Pemet de définir de manière
souple les distances entre les
composants
23/35
Gestionnaire de placement (5)
Positionnement absolu
Null
On place les composants sur le conteneurs en indiquant la
position absolue avec la méthode setBounds(x, y, h, l)
24/35
Gestionnaire de placement (6)
Tout conteneur possède un gestionnaire de présentation
par défaut.
Tout instance de Container référence une instance de
LayoutManager.
Il est possible d'en changer grâce à setLayout().
Les éditeurs visuels (GuiBuilder) utilise un gestionnaire de
placement additionnel :
GroupLayout
25/35
Premier exemple : ExempleIHM
import java.awt.*;
import javax.swing.*;
public class ExempleIHM extends JFrame {
private JButton b1;
private JButton b2;
public static void main(String args[]) {
ExempleIHM that = new ExempleIHM();
that.pack(); //change taille du Frame pour englober boutons
that.setVisible(true);
}
public ExempleIHM() {
super("Notre exemple d'IHM"); // lance le constructeur de la super
classe, ici Frame
setLayout(new FlowLayout()); // nouveau gestionnaire pres.
b1 = new JButton("Appuyer");
b2 = new JButton("Ne pas appuyer");
Container content = getContentPane();
content.add(b1);
content.add(b2);
}
}
C o n t a in e r
L a y o u tM a n a g e r
L a y o u tM a n a g e r 2
B o rd e rL a yo u t
C a rd L a yo u t
G r id B a g L a y o u t
F lo w L a y o u t
G r id L a y o u t
27/35
Principaux paquetages Swing
javax.swing
javax.swing.border
javax.swing.colorchooser
javax.swing.event
javax.swing.filechooser
javax.swing.plaf
javax.swing.table
javax.swing.text
javax.swing.text.html
javax.swing.text.rtf
javax.swing.tree
javax.swing.undo
28/35
Le dessin sur transparents
29/35
Les étiquettes d'aide en ligne
●
Chaque fois qu’un utilisateur frappe un caractère du clavier,
appuie sur un bouton de la souris ou la déplace, un événement
est généré.
●
Ces événements sont envoyés à un composant appelé écouteur,
mais c'est à lui d'enregistrer une routine de traitement
d'événement pour recevoir l'événement.
Le traitement de l'événement est ainsi délégué à une classe
séparée.
31/35
Les événements générés (2)
●
La gestion des événements passe par l'utilisation d'objets
"écouteur d'événements" (les Listener) et d'objets
sources d'événements.
32/35
Les événements générés (3)
34/35
Conteneurs et composants : hiérarchie
Object
(from la ng)
Button
Hiérarchie d’héritage
Canvas Component des principaux éléments des
interfaces graphiques en Java
Checkbox
Container
Choice
Label
Panel Window
Scrollbar List
Dialog Frame
Applet
TextComponent
(from applet)
FileDialog
TextArea TextField
35/35