Java 6: Les Frames
1
Hua T-Tê
Cours 6 :
Interface graphique en Java - Les Frames
Préambule :
Ce cours ne contient que quelques brèves descriptions des composants graphiques Java. La
liste présentée est loin d’être exhaustive. Pour de plus amples renseignements concernant le
sujet, un lien intéressant qui peut vous être utile:
http://java.sun.com/docs/books/tutorial/uiswing/components/
Vous y trouverez de nombreux exemples. Bonne lecture !!
Tous les tests contenus dans ce dossier nécessitent le compilateur Java 1.5.
1. Les Packages AWT et SWING :
AWT (Abstract Window ToolKit) est un ensemble de classes Java qui permettent de faire des
interfaces graphiques, c'est-à-dire simuler des boutons, des menus, des icônes, … tous les
widgets systèmes. Ces classes sont déclarées dans le package java.awt.
Pour être portable (même au niveau de l’apparence), les classes SWING sont crées et sont
déclarées dans le package javax.swing.
Les swing sont représentés par un ensemble de containers et des composants de base.
Seules les frames sont présentées dans ce document.
2. Hiérarchie des containers et les composants de base :
Remarque :
Seules les classes ci-dessous marquées en « gras » sont présentées avec un exemple. La liste
des classes n’est pas exhaustive.
Une frame est une fenêtre qui contient (encapsule) des containers qui contiennent eux-mêmes
des composants.
2.1. Les containers sont répartis en 3 catégories :
a- containers de haut niveau
JApplet : définit une applet
JDialog : définit une fenêtre de dialogue qui peut être modale ou non
JFrame : définit une fenêtre de type application contenant des titres, des
boutons, des menus, …
JWindows : définit une fenêtre sans le cadre
b- containers génériques :
JPanel : c’est une classe destinée à contenir d’autres classes. On fait en
principe appel à la méthode setLayout(LayoutManager) pour gérer la manière
dont les composants sont placés.
JScrollPane : permettre d’ajouter un ascenseur à un textArea.
JTabbedPane : permettre de mettre plusieurs panels dans des onglets.
JToolbar : permettre de créer une barre de boutons (JButton)
JMenuBar : permettre de créer une barre de menus et de sous-menus
(items)
Java 6: Les Frames
2
Hua T-Tê
c- containers spécifiques
JInternalFrame : permettre d’afficher une fenêtre dans une JFrame
JLayeredPane : permet d’afficher des JPanels à différents niveaux.
JRootPane : structure de base des composants swing pouvant contenir des
menus.
2.2. Les composants sont répartis en 2 groupes :
a- composants non éditable : (pas d’évènement)
JProgessBar : affiche une barre de progession
JLabel : permet d’afficher un texte dans une zone d’étiquette. On peut y mettre
un texte en format HTML
JToolTip : affiche des indications sur un composant
b- composants éditables (génèrent un évènement)
JTextField : représente un champ de saisie d’un texte.
JTextArea : permet de travailler avec un texte sur plusieurs lignes
JButton : représente un bouton qui génère un événement sur un simple click
JComboxBox : permet de choisir qu’un seul élément dans une liste
JList : permet de choisir plusieurs éléments dans une liste
JPasswordField : permet de saisir un texte « crypté »
3. Les évènements :
Pour pouvoir gérer les évènements (capture d’un évènement), il faut implémenter l’interface
correspondant à l’évènement :
- ActionListener
- ChangeListener
- WindowsListener
c
ontainer niveau 1
containers génériques
C
ontainers spécifiques
Java 6: Les Frames
3
Hua T-Tê
Ces interfaces sont déclarées dans le package java.awt.event.
Par exemple pour être prévenu d’un évènement survenu à un des composants éditables, il faut
implémenter l’interface ActionListener à la classe qui récupère l’évènement pour le traiter :
class RecupEvenement implements java.awt.event.ActionListener
{ public void actionPerformed(java.awt.even.ActionEvent event)
{ ….. traiter l’évènement ici… }
}
Pour enregistrer un évènement, il faut associer au composant “éditable” du container de la
frame, une commande pour écouter les évènements (méthode addActionListener()).
4. Construction d’une frame :
Pour créer une frame, il suffit de créer une sous-classe de la classe JFrame comme par
exemple :
public class Exemp1Frame extends JFrame
{ … ici construction de la frame … }
Le constructeur de cette frame va dessiner la fenêtre graphique qui va être affichée. Pour
cela, il faudra définir dans l’ordre les éléments (classe) suivants :
1 container niveau 1:
Container contain = getContentPane() ;
contain.setLayout(new GridLayout(2,3,10,10)) ;
getContentPane() crée le container
setLayout définit la forme du container : par exemple, le container
« contain » contient 2 containers de niveau 2 (un JPanel par exemple) de 3
lignes chacun. La dimension de chaque container niveau 2 est de 10*10 pixels
La classe Container est définie dans le package java.awt
2 Container de niveau 2: ils dérivent du container de niveau 1 comme par
exemple JPanel :
JPanel panel1= new JPanel() ;
Crée 1 panel qui sera ajouté au container de niveau 1 « contain » après qu’on
l’ait rempli de composants.
contain.add(panel1) ajoute le panel dans le container une fois que le panel
soit rempli de composants
3 les composants (éditables et non éditables) de bas niveau :
JLabel, JTextField, JTextfield, JButton, JComboBox, ....
On crée ces composants avec leur constructeur respectif ou les
transformer et leur donner une apparence spécifique avec leur méthode
respective.
4 puis on les ajoute au container de niveau 2 (JPanel dans l’exemple) par la
méthode add().
Java 6: Les Frames
4
Hua T-Tê
Soient jlabel un JLabel et jTextField un JTextfield : alors pour les ajouter dans
le container niveau 2 de nom panel1 (ci-dessus), on écrit
panel1.add(jlabel) ; panel1.add(jTextField)
puis ajouter le container de niveau 2 (panel1) au container de niveau 1
(contain):
contain.add(jpanel)
on dimensionne la frame par la méthode setSize() ou par pack()
this.setSize(50,100) dimensionne la frame sur 50 de longueur et 100
de largeur ou bien tout simplement, this.pack() pour redimensionner
automatiquement la frame.
si on veut, on peut centrer la frame au milieu de l’écran:
this.setLocationRelativeTo(null)
enfin, on rend la frame visible :
this.show() ; ou bien this.setVisible(true) ;
5 dans le cas des composants éditables qui peuvent générer un évènement, alors il
faut écouter l’évènement en l’interceptant par la méthode addActionListener()
sur le composant comme par exemple jTextField.addActionListener()
intercepte l’évènement crée par jTextField (en général après la saisie d’un
texte)
Java 6: Les Frames
5
Hua T-Tê
5. Quelques exemples de frames:
5.1. Exemple1 : Un exemple d’affichage d’un libellé JLabel dans une frame sans évènement.
Soit la classe Exemp1Frame.java :
import javax.swing.*;
import java.awt.*;
public class Exemp1Frame extends JFrame{
public static void main(String [] s) {new Exemp1Frame();}
public Exemp1Frame()
{ Container container= getContentPane() ;
container.setLayout(new GridLayout(1,1,10,10)) ;
// frame à 1 panel contenant 1 ligne de largeur10 et hauteur 10 pixels
JPanel panel1= new JPanel() ; // création du Panel, container de niveau 2
JLabel login=new JLabel("Bonjour!!Bienvenue..");// création du composant
panel1.add(login) ; // ajout du composant au Container niveau 2
container.add(panel1) ;// ajout du panel au container niveau 1
this.setSize(50,100); //LARGEUR * HAUTEUR de la frame
// ou this.pack() ; redimensionne automatiquement la frame par défaut
this.show(); // ou setVisible(true);
}
}
Voilà le résultat affiché par la frame :
Remarque :
La classe ci-dessous est lancée comme une application Java (méthode main()).
On peut la lancer comme une frame (ou une applet) Java, dans ce cas, il faut remplacer la méthode main()
par la méthode « start() » ou « init() » :
public void start() {new Exemp1Frame();}
ou public void init()) {new Exemp1Frame();}
JPanel
JLabel
Java 6: Les Frames
6
Hua T-Tê
5.2. Exemple1 bis : une frame éditable utilisant le JTextArea
Ce composant est souvent utilisé pour afficher des listes ou des tables de données :
import java.awt.*;
import javax.swing.*;
public class Exemp1BisFrame extends JFrame{
public static void main(String [] s) {new Exemp1BisFrame();}
public Exemp1BisFrame()
{JPanel panel= new JPanel();
Container container= getContentPane() ;
container.setLayout(new GridLayout(1,1,10,10)) ;
// création d’une frame à 1 panel contenant 1 ligne
JTextArea text = new JTextArea(60,50);
// HAUTEUR * LARGEUR ==> le dixieme des dimensions de la frame
text.setText(" hello \n Je suis dans un textArea!!\n Vous pouvez m'afficher sur
autant de lignes" + " que vous voulez!! \n ");
panel.add(text) ; // ajout du composant au Container niveau 2
container.add(panel) ; //ajout du panel au container niveau 1
this.setTitle("Un EXemple de TextArea");
// Ajouter un titre à la frame
setSize(300,300); //LARGEUR * HAUTEUR de la frame
show(); // ou setVisible(true);
}
}
Java 6: Les Frames
7
Hua T-Tê
5.3. Exemple 2 : Une frame avec un évènement
Pour écouter l’évènement, il faudrait créer une classe Evenement qui implémente l’interface
ActionListener et qui contient la méthode actionPerformed comme ci-dessous :
import java.awt.event.*;
public class ExempleEvenement implements ActionListener{
public void actionPerformed(ActionEvent event)
{
if (event.getSource()== Exemp2Frame.saisielogin)
{ String mes= Exemp2Frame.saisielogin.getText();
System.out.println(" Vous avez saisi: " + mes);
}
else
System.out.println(" aucun evenement ");
}
}
- getSource() sur une ActionEvent permet de récupérer l’évènement
- Exemp2Frame.saisielogin est un objet de JTextField de la classe
Exemp2Frame ci-dessous.
- la fonction getText() sur un JTextField permet de récupérer le texte saisi
On va ajouter à la frame ci-dessus une zone de contrôle pour saisir un texte comme le montre
la frame suivante :
La classe Exemp2Frame qui permet d’afficher la frame :
import javax.swing.*;
import java.awt.*;
public class Exemp2Frame extends JFrame{
public static JTextField saisielogin; // saisielogin doit être en static comme le sont
// tous les composants éditables de cette frame
public static void main(String [] s) {new Exemp2Frame();}
public Exemp2Frame()
{ Container container= getContentPane() ;
// créer le container pour y mettre les composants
J
TextField
J
Label
J
Panel
Java 6: Les Frames
8
Hua T-Tê
container.setLayout(new GridLayout(1,2,10,10)) ;
// création d’une frame à 1 panel contenant 2 lignes
// creation du 1er composant
JPanel panel1= new JPanel() ;
JLabel login=new JLabel("login") ;
panel1.add(login) ;
// creation du 2eme compsosant
saisielogin = new JTextField("",15);
// créer une zone de controle de largeur 15 avec un texte vide
panel1.add(saisielogin);
//pour ecouter l'evenement, on a ajouter ceci
ExempleEvenement event= new ExempleEvenement();
saisielogin.addActionListener(event);
//enfin on ajoute le panel dans le container
container.add(panel1) ;
setSize(350,100); //LARGEUR * HAUTEUR de la frame
show(); // ou setVisible(true);
}
}
5.4. Exemple 3 : Affichage d’une frame représentant une fenêtre de connexion contenant :
un libellé (login), une zone texte (pour la saisie du login), un autre label (password) et une
zone de texte pour saisir le mot de passe.
La classe Exemp3Frame ci-dessous permet de créer cette frame :
import javax.swing.*;
import java.awt.*;
public class Exemp3Frame extends JFrame{
public static JTextField saisielogin;
public static JPasswordField jpwd; // on a ajouté le champ password
Ajouter un titre à la fenêtre
JPasswordField
1 JPanel
Un autre JPanel
Java 6: Les Frames
9
Hua T-Tê
public static void main(String [] s) {new Exemp3Frame();}
public Exemp3Frame()
{ Container container= getContentPane() ;
container.setLayout(new GridLayout(2,2,5,10)) ;
// creation de la 1ere partie de la frame
JPanel panel1= new JPanel() ;
JLabel login=new JLabel("login ") ;
panel1.add(login) ;
saisielogin = new JTextField("",15);
panel1.add(saisielogin);
ExempleEvenement event1= new ExempleEvenement();
saisielogin.addActionListener(event1);
container.add(panel1) ;
// creation de la 2ere partie de la frame
JPanel panel2= new JPanel() ;
JLabel pwd=new JLabel("password") ;
panel2.add(pwd) ;
jpwd = new JPasswordField("",15);
panel2.add(jpwd);
ExempleEvenement event2= new ExempleEvenement();
jpwd.addActionListener(event2);
container.add(panel2) ;
// pour ajouter un titre à la frame
this.setTitle(" FENETRE AUTHENTIFICATION");
setSize(350,130); //LARGEUR * HAUTEUR de la frame
show(); }
}
Et la classe qui récupère l’évènement sera enrichie de la capture du champ de type password :
import java.awt.event.*;
public class ExempleEvenement implements ActionListener{
public void actionPerformed(ActionEvent event)
{if (event.getSource()== Exemp3Frame.saisielogin)
{ String mes= Exemp3Frame.saisielogin.getText();
System.out.println(" Vous avez saisi: " + mes);
}
else if (event.getSource()== Exemp3Frame.jpwd)
{ String mes= Exemp3Frame.jpwd.getText();
System.out.println(" Vous avez saisi: " + mes);
Exemp3Frame.jpwd.setText(""); // remettre à blanc la zone
}
else System.out.println(" aucun evenement ");
}
}
La méthode setText(String) sur un composant permet de forcer ce composant au String passé.
C’est l’inverse de la méthode getText().
Java 6: Les Frames
10
Hua T-Tê
Remarque :
On peut aussi ne créer qu’une seule classe JFrame qui écoute en même temps les évènements
puis les traite. Pour cela il suffit qu’elle implémente l’interface ActionListener et qu’elle
implémente la méthode actionPerformed() comme le montre l’exemple ci-dessous à partir de
l’exemple 2 ci-dessus :
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
// c'est l'exemple2Frame inclus le traitement des evenements
public class Exemple2bisFrame extends JFrame implements ActionListener{
private JTextField saisielogin; // plus besoin d'etre en static
public static void main(String [] s) {new Exemple2bisFrame();}
public Exemple2bisFrame()
{ Container container= getContentPane() ;
container.setLayout(new GridLayout(1,2,10,10)) ;
// création d’une frame à 1 panel contenant 2 lignes
// creation du 1er composant
JPanel panel1= new JPanel() ;
JLabel login=new JLabel("login") ;
panel1.add(login) ;
// creation du deuxieme compsosant
saisielogin = new JTextField("",15);
panel1.add(saisielogin);
//**** pour ecouter l'evenement, on recupere l'evenement
//*** de la cette meme frame ...
saisielogin.addActionListener(this);
container.add(panel1) ;
setSize(350,100); //LARGEUR * HAUTEUR de la frame
show();
}
public void actionPerformed(ActionEvent event)
{ if (event.getSource()== saisielogin)
{ String mes= saisielogin.getText();
System.out.println(" Vous avez saisi: " + mes); }
else System.out.println(" aucun evenement "); }
}
Java 6: Les Frames
11
Hua T-Tê
5.5. Exemple 4:
On peut créer une frame pour lancer plusieurs autres frames en clickant sur des
boutons comme le montre l’exemple suivant qui lance la frame Exemp2Frame ou
Exemp3Frame selon que l’on clicke l’un ou l’autre bouton. La bouton stop ferme la frame.
L’exemple Exemp4Frame ci-dessous est une frame implémentant l’interface ActionListener.
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Exemple4Frame extends JFrame implements ActionListener {
JButton b1, b2, b3;
public Exemple4Frame ()
{
Container container=getContentPane();
container.setLayout(new GridLayout(3,1,10,10));
b1= new JButton("LANCEMENT FRAME EXEMPLE 2");
b2= new JButton("LANCEMENT FRAME AUTHENTIFICATION");
b3= new JButton("FIN");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
container.add(b1);container.add(b2);container.add(b3);
this.setTitle("MENU PRINCIPAL");
setSize(250,250);
setVisible(true);
Java 6: Les Frames
12
Hua T-Tê
}
public void actionPerformed(ActionEvent evt){
if (evt.getSource() == b1) { new Exemp2Frame();}
if (evt.getSource() == b2) { new Exemp3Frame();}
if (evt.getSource() == b3) {this.hide();} // hide() ferme la frame
}
public static void main(String [] s)
{ new Exemple4Frame(); }
}
5.6. Exemple 5 : un exemple de frame utilisant les composants:
JComboBox
JCheckBox
JRadioButton
Le tableau du JComboBox
2 J
RadioButton
1 JCheckBox
1 JButton
Java 6: Les Frames
13
Hua T-Tê
import javax.swing.*;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
public class Exemp5Frame extends JFrame implements ActionListener{
private JComboBox comboBox;
private JRadioButton RadioChoix1, RadioChoix2;
private JCheckBox BoxChoix;
private JButton retour;
public static void main(String [] s) {new Exemp5Frame();}
public Exemp5Frame()
{ Container container= getContentPane() ;
container.setLayout(new GridLayout(4,4,5,10)) ;
// création d’une frame à 4 panel contenant 4 lignes
// creation de la 1ere partie de la frame contenant 1 label+ 1 comboBox
JPanel panel1= new JPanel() ;
JLabel menuprincipal=new JLabel("Faites votre choix ") ;
panel1.add(menuprincipal) ;
// Ajout d'un ComboBox avec les choix dans le tableau de String tabAction
String[] tabAction = {"création","suppression","miseAjour","afficher"};
comboBox = new JComboBox(tabAction);
comboBox.addActionListener(this);
panel1.add(comboBox);
container.add(panel1);
// Ajout d'un bouton Radio
RadioChoix1 = new JRadioButton("Visiteur");
RadioChoix2 = new JRadioButton("Administrateur");
RadioChoix1.addActionListener(this);
RadioChoix2.addActionListener(this);
// ici on réutilise le meme panel apres l'avoir reinitialise
panel1 = new JPanel();
panel1.add(RadioChoix1);panel1.add(RadioChoix2);
container.add(panel1);
// Ajout d'un Check Box
BoxChoix = new JCheckBox();
BoxChoix.addActionListener(this);
menuprincipal=new JLabel("POUR LANCER LA FRAME EXEMP4 ") ;
panel1 = new JPanel();
Java 6: Les Frames
14
Hua T-Tê
panel1.add(menuprincipal) ;
panel1.add(BoxChoix);
container.add(panel1);
// Ajout d'un Button de retour
panel1 = new JPanel();
retour= new JButton("RETOUR");
retour.addActionListener(this);
panel1.add(retour);
this.getContentPane().add(panel1); // au lieu container.add(Zone4)
this.setTitle(" UN EX DE ComboX + BoutonRadio + CheckBox");
setSize(380,330); show(); }
public void actionPerformed(ActionEvent event)
{ if (event.getSource() == comboBox) // cas ComboBox
{ int nbre= comboBox.getItemCount();
// retourne le nombre total de choix dans la liste
int choix = comboBox.getSelectedIndex();
//retourne l'index correspondant au choix dans le Vector
String typechoix= "";
switch (choix)
{ case 0 : typechoix="creation";break;
case 1 : typechoix="suppression";break;
case 2 : typechoix="miseAjour";break;
case 3 : typechoix="Afficher";break;
}
JOptionPane.showMessageDialog
(null, "CHOIX est " + typechoix + " \nNb total de choix= " + nbre);
}
else // cas bouton radio 1
if (event.getSource() == RadioChoix1)
{ JOptionPane.showMessageDialog(null, "Vous etes un visiteur");
RadioChoix1.setVisible(false); // cache le bouton 1
RadioChoix2.setEnabled(false);} // rend le bouton2 non dispo
else // cas bouton radio 2
if (event.getSource() == RadioChoix2)
{JOptionPane.showMessageDialog(null, "Vous etes un Administateur
else // cas checkbox
if (event.getSource() == BoxChoix) new Exemple4Frame();
else // cas bouton enfonce
if (event.getSource() == retour)
{ this.hide(); JOptionPane.showMessageDialog(null, "Au Revoir!!"); }
else System.out.println(" aucun evenement ");
}
}
Java 6: Les Frames
15
Hua T-Tê
5.7. Exemple 6 : un exemple de frame utilisant les menus.
Pour présenter une frame avec des menus de choix sous forme d’onglets, il faut utiliser les
classes suivantes :
Container (niveau 1)
JMenuBar (niveau 2)
JMenu, JMenuItem (composants)
Seuls les JMenuItem peuvent envoyer des messages. Le choix se fait à travers les
JMenuItems. On ajoute des JMenu et JMenuItem dans les JMenuBar qu’on ajoute dans les
Container. On peut aussi ajouter des JMenu dans des JMenu.
Pour connaître quel JMenuItem a été choisi, on récupère l’évènement par la méthode
getActionCommand() sur l’évènement: c’est la chaîne de caractères nommant le JMenuItem.
La classe Exemp6Frame ci-dessous affiche la frame ci-dessous dans laquelle
dans le JMenuBar : on y met 2 JMenu ARTICLE et COMMANDE et 1
JMenuItem FIN. Seul le JMenuItem peut engendrer un évènement : un click sur FIN ferme la
frame par exemple
dans le JMenuItem ARTICLE, il y a 3 sous-menus représentés par 3 JMenuItem.
Chaque JMenuItem engendre un évènement représenté par la chaîne de caractères mentionnée
sur le sous –menu (Consultation,Création,…)
dans le JMenuItem COMMANDE, il y a 2 sous-menus dont le 1
er
sous-menu
contient lui-même 2 autres sous-menus :
JMenuItem «
FIN
»
évènement possible. La chaîne
de caractères le nommant est
« FIN »
JMenu «
ARTICLE
» contient 3
sous-menu JMenuItem : la chaîne de
caractères nommant le 2eme ss-menu
JMenuItem est « Création »
Cette barre est un
JMen
uBar
contenant 2 JMenus
ARTICLE et COMMANDE
et 1 JMenuItem FIN
JMenu «
COMMANDE
»
pas d’ évènement possible
Java 6: Les Frames
16
Hua T-Tê
import javax.swing.*;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.*;
// exemple d'utilisation des menus et des sous-menus
public class Exemp6Frame extends JFrame implements ActionListener{
// cette classe est a lancer comme applet Java. Elle remplace la fonction main()
public void start() { new Exemp6Frame();}
public Exemp6Frame()
{ Container container= getContentPane();
container.setLayout(new GridLayout(2,1,20,10));
JPanel panel1;
JMenuBar barMenu;
JMenu menu1,menu2;
JMenuItem menuItem;
this.setTitle("EXEMPLE DE MENUS ET SOUS-MENUS");
// Ici on a voulu mettre un texte en format Html
la chaîne de caractères nommant ce
JMenuItem est « Cde-Creation »
Le sous-menu «
Affichage
» est
un JMenu. Il contient 2 sous-
menus JMenuItem Affichage
Formulaire et Affichage
Feuille de donnees
Le sous-menu «
Affichage
Formulaire
»
est un JMenuItem il peut engendrer
un évènement. La chaîne de caractères le
nommant est « Affichage Formulaire »
Java 6: Les Frames
17
Hua T-Tê
JLabel label= new JLabel("<html> <center> <br><br><br><br> <hR><h3>
EXEMPLE D'UTILISATION <br> DES MENUS et SOUS-
MENUS <hr></h3> </html>");
panel1 = new JPanel();
panel1.add(label);
// On cree un menu bar pour y mettre des menus
barMenu= new JMenuBar();
// preparation de chaque menu: preparation du menu 1
menu1 = new JMenu("<html><h4>ARTICLE </h4></html>");
// Y ajouter 3 sous menus
menuItem= new JMenuItem("Consultation");
menuItem.addActionListener(this);
menu1.add(menuItem);
menu1.add(new JSeparator()); // ajouter un separateur
menuItem= new JMenuItem("Création");
menuItem.addActionListener(this);
menu1.add(menuItem);
menu1.add(new JSeparator()); // ajouter un separateur
menuItem= new JMenuItem("......");
menuItem.addActionListener(this);
menu1.add(menuItem);
barMenu.add(menu1);
menu2 = new JMenu("<html><h4> COMMANDE </h4></html>");
// menu Affichage avec 2 sous-menus
menu1= new JMenu("Affichage");
menu2.add(menu1);
// ajout de 2 sous-menu avec action
menuItem = new JMenuItem("Affichage Formulaire");
menu1.add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("Affichage Feuille de donnees");
menu1.add(menuItem);
menuItem.addActionListener(this);
menu2.add(new JSeparator()); // ajouter un separateur
menuItem= new JMenuItem("Cde-Creation");
menu2.add(menuItem);
menuItem.addActionListener(this);
barMenu.add(menu2);
menuItem = new JMenuItem("<html><h2>FIN</h2></html>");
Java 6: Les Frames
18
Hua T-Tê
menuItem.addActionListener(this);
barMenu.add(menuItem);
// ajoute le menu bar au container + le cale à gauche de la frame
this.setJMenuBar(barMenu);
container.add(panel1) ;
setSize(450,420); //LARGEUR * LONGUEUR de la frame
show();
}
public void actionPerformed(ActionEvent event)
{ // ici on utilise le getActionCommand au lieu du getSource
if (event.getActionCommand().equals("Consultation"))
JOptionPane.showMessageDialog(null, "Consultation Article déclenché ");
else
if (event.getActionCommand().equals("Création"))
JOptionPane.showMessageDialog(null, "Création Article déclenché ");
else
if (event.getActionCommand().equals("Affichage Formulaire"))
JOptionPane.showMessageDialog(null, "Affichage Formulaire Cde déclenché ");
else
if (event.getActionCommand().equals("Affichage Feuille de donnees"))
JOptionPane.showMessageDialog
(null, "Affichage Feuille de donnees Commande déclenché ");
else
if (event.getActionCommand().equals("Cde-Creation"))
JOptionPane.showMessageDialog(null, "Creation Commande déclenché ");
else
if (event.getActionCommand().equals("<html><h2>FIN</h2></html>"))
{JOptionPane.showMessageDialog(null, ".. AU REVOIR ... "); this.hide();}
else
JOptionPane.showMessageDialog
(null, " NON DISPONIBLE .. en cours de Construction ");
}
}
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !