Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Les Fenêtres
Éric Gillon Thomas Rey
Lycée Marlioz
4 décembre 2012
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Introduction
Jusqu’à présent nos programmes manquaient de convivialité.
Nous étions restés à l’informatique des années 80. . .
source de l’image : http://histoire.info.free.fr
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Introduction (suite)
Aujourd’hui, nous allons faire un bond en avant et créer des fenêtres.
Ce diaporama présentera les bases ;
Ensuite nous verrons comment créer des classes pour simplifier le code de nos programmes (voir document papier distribué).
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Sommaire
1 Boîtes de dialogues
2 Création de fenêtres
3 Ajout de contenu dans le panneau
4 Interaction avec l’utilisateur
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîtes de dialogue
Pour poser une question ou afficher un résultat le mode
« console » n’est plus satisfaisant pour les programmeurs que vous êtes. . .Nous allons donc créer et utiliser :
des boîtes de confirmation ;
des boîtes d’entrée de texte ; des boîtes de message.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîtes de dialogue
Pour poser une question ou afficher un résultat le mode
« console » n’est plus satisfaisant pour les programmeurs que vous êtes. . .Nous allons donc créer et utiliser :
des boîtes de confirmation ; des boîtes d’entrée de texte ;
des boîtes de message.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîtes de dialogue
Pour poser une question ou afficher un résultat le mode
« console » n’est plus satisfaisant pour les programmeurs que vous êtes. . .Nous allons donc créer et utiliser :
des boîtes de confirmation ; des boîtes d’entrée de texte ; des boîtes de message.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
Une boîte de confirmation demande un « clic » à l’utilisateur (oui/non, OK/Annuler/Ignorer, . . .). La réponse est un int. On la déclare ainsi :
int r e p o n s e;
r e p o n s e = J O p t i o n P a n e.s h o w C o n f i r m D i a l o g(null,// p o s i t i o n
" Vous a v e z t o u t c o m p r i s ? ", // la q u e s t i o n
" Q u e s t i o n ",// i n t i t u l é de la b o î t e
J O p t i o n P a n e.Y E S _ N O _ O P T I O N,// t y p e de b o u t o n s J O p t i o n P a n e.I N F O R M A T I O N _ M E S S A G E) ;// i c ô n e
Penser à indiquer :import javax.swing.JOptionPane; dans le préambule (mais Eclipse vous le rappelle. . .)
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
Une boîte de confirmation demande un « clic » à l’utilisateur (oui/non, OK/Annuler/Ignorer, . . .). La réponse est un int. On la déclare ainsi :
int r e p o n s e;
r e p o n s e = J O p t i o n P a n e.s h o w C o n f i r m D i a l o g(null,// p o s i t i o n
" Vous a v e z t o u t c o m p r i s ? ", // la q u e s t i o n
" Q u e s t i o n ",// i n t i t u l é de la b o î t e
J O p t i o n P a n e.Y E S _ N O _ O P T I O N,// t y p e de b o u t o n s J O p t i o n P a n e.I N F O R M A T I O N _ M E S S A G E) ;// i c ô n e
Penser à indiquer :import javax.swing.JOptionPane; dans le préambule (mais Eclipse vous le rappelle. . .)
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
Une boîte de confirmation demande un « clic » à l’utilisateur (oui/non, OK/Annuler/Ignorer, . . .). La réponse est un int. On la déclare ainsi :
int r e p o n s e;
r e p o n s e = J O p t i o n P a n e.s h o w C o n f i r m D i a l o g(null,// p o s i t i o n
" Vous a v e z t o u t c o m p r i s ? ", // la q u e s t i o n
" Q u e s t i o n ",// i n t i t u l é de la b o î t e
J O p t i o n P a n e.Y E S _ N O _ O P T I O N,// t y p e de b o u t o n s J O p t i o n P a n e.I N F O R M A T I O N _ M E S S A G E) ;// i c ô n e
Penser à indiquer :import javax.swing.JOptionPane; dans le préambule (mais Eclipse vous le rappelle. . .)
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
On obtient :
Après le clic la boîte disparaît et la valeur de la variable reponse est :
0 si on clique sur oui ; 1 si on clique sur non.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
On obtient :
Après le clic la boîte disparaît et la valeur de la variable reponse est :
0 si on clique sur oui ;
1 si on clique sur non.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de confirmation
On obtient :
Après le clic la boîte disparaît et la valeur de la variable reponse est :
0 si on clique sur oui ; 1 si on clique sur non.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte d’entrée de texte
Sur le même modèle, que fait le code suivant ?
S t r i n g r e p o n s e 2;
r e p o n s e 2 = J O p t i o n P a n e.s h o w I n p u t D i a l o g(null,
" Menteur ! Résumez v o s c o n n a i s s a n c e s i c i : ",
" S a i s i r du t e x t e ",
J O p t i o n P a n e.Q U E S T I O N _ M E S S A G E) ;
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Réponse
On obtient :
La variablereponse2 contient :
le texte saisi si on a cliqué sur OK ; nullsi on a cliqué sur Annuler.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Réponse
On obtient :
La variablereponse2 contient :
le texte saisi si on a cliqué sur OK ; nullsi on a cliqué sur Annuler.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Boîte de message
Parfois, on souhaite juste afficher une réponse ou une information :
J O p t i o n P a n e.s h o w M e s s a g e D i a l o g(null,
" I l va f a l l o i r t r a v a i l l e r p l u s ",
" C o n s e i l i m p o r t a n t ! ",
J O p t i o n P a n e.W A R N I N G _ M E S S A G E) ;
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
On obtient :
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Sommaire
1 Boîtes de dialogues
2 Création de fenêtres
3 Ajout de contenu dans le panneau
4 Interaction avec l’utilisateur
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Principes
Pour créer une fenêtre plus élaborée en Java, plusieurs méthodes sont possibles (avecswing, awt, . . .)
Nous avons choisi d’utiliserswing dont les principes sont les suivants :
créer une JFrame(la fenêtre) ;
créer un JPanel(un panneau) qui contiendra ce que nous placerons dans la fenêtre.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Principes
Pour créer une fenêtre plus élaborée en Java, plusieurs méthodes sont possibles (avecswing, awt, . . .)
Nous avons choisi d’utiliserswing dont les principes sont les suivants :
créer uneJFrame (la fenêtre) ;
créer un JPanel(un panneau) qui contiendra ce que nous placerons dans la fenêtre.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Principes
Pour créer une fenêtre plus élaborée en Java, plusieurs méthodes sont possibles (avecswing, awt, . . .)
Nous avons choisi d’utiliserswing dont les principes sont les suivants :
créer uneJFrame (la fenêtre) ;
créer un JPanel(un panneau) qui contiendra ce que nous placerons dans la fenêtre.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Ajouter une fenêtre
i m p o r t j a v a x.s w i n g.J F r a m e
p u b l i c s t a t i c v o i d m a i n(S t r i n g[] a r g s) { J F r a m e m a f e n e t r e = new J F r a m e() ; m a f e n e t r e.s e t V i s i b l e(t r u e) ;
// On d é f i n i t le t i t r e de la f e n ê t r e :
m a f e n e t r e.s e t T i t l e(" D e v o i r Maison d ’ ISN n 4 −T . Rey") ; // sa t a i l l e :
m a f e n e t r e.s e t S i z e( 4 0 0 , 3 0 0 ) ; // sa p o s i t i o n à l ’ é c r a n :
m a f e n e t r e.s e t L o c a t i o n(1400 , 2 0 0 ) ;
// E n f i n on lui i n d i q u e de q u i t t e r l o r s q u ’ on c l i q u e // sur le b o u t o n de f e r m e t u r e de la f e n ê t r e
m a f e n e t r e.s e t D e f a u l t C l o s e O p e r a t i o n(J F r a m e.E X I T _ O N _ C L O S E) ; }
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Quelques méthodes
On écritnomdelafenetre. suivi de :
setResizable(false); pour empêcher le redimensionnement de la fenêtre ;
setAlwaysOnTop(true); pour garder la fenêtre au premier plan ;
setUndecorate(true); pour rendre les contours et boutons de contrôles invisibles ;
. . .
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Quelques méthodes
On écritnomdelafenetre. suivi de :
setResizable(false); pour empêcher le redimensionnement de la fenêtre ;
setAlwaysOnTop(true); pour garder la fenêtre au premier plan ;
setUndecorate(true); pour rendre les contours et boutons de contrôles invisibles ;
. . .
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Quelques méthodes
On écritnomdelafenetre. suivi de :
setResizable(false); pour empêcher le redimensionnement de la fenêtre ;
setAlwaysOnTop(true); pour garder la fenêtre au premier plan ;
setUndecorate(true); pour rendre les contours et boutons de contrôles invisibles ;
. . .
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Quelques méthodes
On écritnomdelafenetre. suivi de :
setResizable(false); pour empêcher le redimensionnement de la fenêtre ;
setAlwaysOnTop(true); pour garder la fenêtre au premier plan ;
setUndecorate(true); pour rendre les contours et boutons de contrôles invisibles ;
. . .
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Création d’un panneau de contenu
Pour ajouter du contenu à une fenêtre, il faut créer un
« panel » ou panneau. Pour cela :
importer la classejavax.swing.JPanelpar la commande import javax.swing.JPanel (au tout début du
programme) ;
créer un JPanelpar : JPanel panneau = new JPanel(); indiquer à la fenêtre que c’est ce panneau qui est son
« contentPane » :
mafenetre.setContentPane(panneau); On peut changer la couleur de fond :
panneau.setBackground(Color.cyan);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Création d’un panneau de contenu
Pour ajouter du contenu à une fenêtre, il faut créer un
« panel » ou panneau. Pour cela :
importer la classejavax.swing.JPanelpar la commande import javax.swing.JPanel (au tout début du
programme) ;
créer un JPanelpar : JPanel panneau = new JPanel(); indiquer à la fenêtre que c’est ce panneau qui est son
« contentPane » :
mafenetre.setContentPane(panneau); On peut changer la couleur de fond :
panneau.setBackground(Color.cyan);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Création d’un panneau de contenu
Pour ajouter du contenu à une fenêtre, il faut créer un
« panel » ou panneau. Pour cela :
importer la classejavax.swing.JPanelpar la commande import javax.swing.JPanel (au tout début du
programme) ;
créer un JPanelpar : JPanel panneau = new JPanel();
indiquer à la fenêtre que c’est ce panneau qui est son
« contentPane » :
mafenetre.setContentPane(panneau); On peut changer la couleur de fond :
panneau.setBackground(Color.cyan);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Création d’un panneau de contenu
Pour ajouter du contenu à une fenêtre, il faut créer un
« panel » ou panneau. Pour cela :
importer la classejavax.swing.JPanelpar la commande import javax.swing.JPanel (au tout début du
programme) ;
créer un JPanelpar : JPanel panneau = new JPanel();
indiquer à la fenêtre que c’est ce panneau qui est son
« contentPane » :
mafenetre.setContentPane(panneau);
On peut changer la couleur de fond : panneau.setBackground(Color.cyan);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Création d’un panneau de contenu
Pour ajouter du contenu à une fenêtre, il faut créer un
« panel » ou panneau. Pour cela :
importer la classejavax.swing.JPanelpar la commande import javax.swing.JPanel (au tout début du
programme) ;
créer un JPanelpar : JPanel panneau = new JPanel();
indiquer à la fenêtre que c’est ce panneau qui est son
« contentPane » :
mafenetre.setContentPane(panneau);
On peut changer la couleur de fond : panneau.setBackground(Color.cyan);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Résultat
On obtient :
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Sommaire
1 Boîtes de dialogues
2 Création de fenêtres
3 Ajout de contenu dans le panneau
4 Interaction avec l’utilisateur
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Les « conteneurs »
Nous avons désormais une belle fenêtre sur fond bleu cyan, mais elle est vide ! Pour la remplir, on peut :
créer des conteneurs (ou components en anglais) : textes, boutons, zones de textes, cases à cocher, . . .
ajouter ceux-ci au panneau ;
nous verrons plus tard comment les organiser.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Les « conteneurs »
Nous avons désormais une belle fenêtre sur fond bleu cyan, mais elle est vide ! Pour la remplir, on peut :
créer des conteneurs (ou components en anglais) : textes, boutons, zones de textes, cases à cocher, . . .
ajouter ceux-ci au panneau ;
nous verrons plus tard comment les organiser.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Les « conteneurs »
Nous avons désormais une belle fenêtre sur fond bleu cyan, mais elle est vide ! Pour la remplir, on peut :
créer des conteneurs (ou components en anglais) : textes, boutons, zones de textes, cases à cocher, . . .
ajouter ceux-ci au panneau ;
nous verrons plus tard comment les organiser.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Les « conteneurs »
Nous avons désormais une belle fenêtre sur fond bleu cyan, mais elle est vide ! Pour la remplir, on peut :
créer des conteneurs (ou components en anglais) : textes, boutons, zones de textes, cases à cocher, . . .
ajouter ceux-ci au panneau ;
nous verrons plus tard comment les organiser.
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs :
un texte à afficher :
JLabel monTexte = new JLabel("Coucou !"); un bouton :
JButton bouton1 = new JButton("J’ai compris"); un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20); une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs : un texte à afficher :
JLabel monTexte = new JLabel("Coucou !");
un bouton :
JButton bouton1 = new JButton("J’ai compris"); un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20); une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs : un texte à afficher :
JLabel monTexte = new JLabel("Coucou !");
un bouton :
JButton bouton1 = new JButton("J’ai compris");
un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20); une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs : un texte à afficher :
JLabel monTexte = new JLabel("Coucou !");
un bouton :
JButton bouton1 = new JButton("J’ai compris");
un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20);
une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs : un texte à afficher :
JLabel monTexte = new JLabel("Coucou !");
un bouton :
JButton bouton1 = new JButton("J’ai compris");
un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20);
une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Exemples de conteneurs
Voici une liste (non exhaustive) de conteneurs : un texte à afficher :
JLabel monTexte = new JLabel("Coucou !");
un bouton :
JButton bouton1 = new JButton("J’ai compris");
un champ de texte (à saisir) :
JTextField champTexte = new JTextField(20);
une zone de texte (à saisir) :
JTextArea zoneTexte = new JTextArea(3,20);
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Attention : penser aux «
import»
Pour chacun des conteneurs précédents, penser à importer la bibliothèque correspondante (mais Eclipse vous le rappelle) avant le début de la classe :
i m p o r t j a v a x.s w i n g.J B u t t o n; i m p o r t j a v a x.s w i n g.J L a b e l; i m p o r t j a v a x.s w i n g.J T e x t A r e a; i m p o r t j a v a x.s w i n g.J T e x t F i e l d;
ou, pour être sûr de n’en oublier aucun : import.javax.swing.*;
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Attention : penser aux «
import»
Pour chacun des conteneurs précédents, penser à importer la bibliothèque correspondante (mais Eclipse vous le rappelle) avant le début de la classe :
i m p o r t j a v a x.s w i n g.J B u t t o n; i m p o r t j a v a x.s w i n g.J L a b e l; i m p o r t j a v a x.s w i n g.J T e x t A r e a; i m p o r t j a v a x.s w i n g.J T e x t F i e l d; ou, pour être sûr de n’en oublier aucun : import.javax.swing.*;
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Enfin, on les affiche !
Une fois ces conteneurs créés, il suffit de les ajouter à notre panneau :
m o n P a n n e a u.add(m o n T e x t e) ; m o n P a n n e a u.add(b o u t o n 1) ; m o n P a n n e a u.add(c h a m p T e x t e) ; m o n P a n n e a u.add(z o n e T e x t e) ;
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Résultat
On obtient la jolie fenêtre ci-dessous :
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Sommaire
1 Boîtes de dialogues
2 Création de fenêtres
3 Ajout de contenu dans le panneau
4 Interaction avec l’utilisateur
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur
Obtenir des informations
Dans l’exemple précédent, nous avons créé des conteneurs que l’utilisateur va (ou non) utiliser :
boutons ;
zones de textes ; cases cochées, . . .
Il faut maintenant récupérer ces informations : quel bouton a été pressé ?
quel texte a été saisi ? quelles cases sont cochées ? . . .
Boîtes de dialogues Création de fenêtres Ajout de contenu dans le panneau Interaction avec l’utilisateur