précédent | suivant | table des matières

Menu

Sommaire
  1. Barre de menu JMenuBar
  2. Menu JMenu
  3. Item de menu
    1. Item de menu JMenuItem
    2. Item de menu JRadioButtonMenuItem
    3. Item de menu JCheckButtonMenuItem
  4. Menu contextuel JPopupMenu

Démonstration de quelques possibilités des menus.

hiérarchie des composants menu

1JMenuBar

Ce composant permet de créer une barre de menu.


JMenuBar mb = new JMenuBar();
   ...
frame.setJMenuBar(mb)
Pour ajouter des menus dans une barre de menu Pour cadrer un menu à droite
mb.add(un menu)
mb.add(Box.createHorizontalGlue());
mb.add( un menu);

1JMenu

Ce composant permet de créer un menu. Un menu sera composé d'un ou plusieurs items de menu.

JMenu menu = new JMenu();
// affecter le texte du menu
menu.setText("Mon Menu");
// affecter l'icône du menu
menu.setIcon(new ImageIcon(getClass().getResource("/testswing/icone.gif")));
// affecter le raccourci alt+M
menu.setMnemonic(KeyEvent.VK_M);
// ajouter le menu dans la barre de menu
mb.add(menu);

Un menu peut être ajouté à un autre menu : on parle alors de sous-menu.

Pour ajouter des items dans un menu Pour insérer une séparation dans la liste des items
menu.add(un item)
menu.addSeparator()

3Item de menu

Il y a trois sortes d'item de menu :

3 1JMenuItem

Ce composant permet de créer un item de menu. Cet item peut être muni d'un texte, d'une icône, d'un raccourci, et d'un accélérateur. Il peut être actif ou inactif.

JMenuItem mi = new JMenuItem();
// affectation de l'icône
mi.setIcon(new ImageIcon(getClass().getResource("/testswing/icone.gif")));
// affectation du texte
mi.setText("le texte");
// affectation du raccourci alt+m
mi.setMnemonic(KeyEvent.VK_M);
// affectation de l'accélérateur ctrl+z
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, Event.CTRL_MASK, true));
// l'item de menu est actif
mi.setEnabled(true);
// Ajout de l'item à un menu 
menu.add(mi);

Un item peut déclencher une action quand il est choisi :

java.awt.event.ActionListener action = new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent e) {
      // e.getSource() permet de connaître la source qui a déclenché l'action
   }
};
. . .
mi.addActionListener(action);

3 2JRadioButtonMenuItem

Un item de menu peut être un bouton radio. Ceci permet de faire des choix exclusifs : on utilise un ButtonGroup pour grouper les boutons radio : un seul bouton du groupe peut être sélectionné.

JRadioButtonMenuItem jrb1 = new JRadioButtonMenuItem();
jrb1.setSelected(true);
JRadioButtonMenuItem jrb2 = new JRadioButtonMenuItem();
JRadioButtonMenuItem jrb3 = new JRadioButtonMenuItem();
ButtonGroup bg = new ButtonGroup();

   bg.add(jrb1);
   bg.add(jrb2);
   bg.add(jrb3);

3 3JCheckButtonMenuItem

Un item de menu peut être une boîte à cocher.  les méthodes isSelected() et setSelected(boolean b) permettent de savoir si une boîte est cochée, et de la cocher ou de la décocher.

4JPopupMenu

Un menu surgissant se construit comme un menu :

JPopupMenu popup = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("un item de popup");
popup.add(menuItem);
menuItem = newJMenuItem("un autre item de popup");
popup.add(menuItem);
popup.addSeparator();
menuItem = new JMenuItem();
menuItem.setText("Quitter");
menuItem.setIcon(new ImageIcon(getClass().getResource("/testswing/quitter.gif")));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,Event.CTRL_MASK, true));
menuItem.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent e) {
      System.exit(0);
   }
});
popup.add(menuItem);

Un menu surgissant est rendu visible à la suite d'un événement, sous Windows™ c'est lors du relachement du bouton droit de la souris :

java.awt.event.MouseAdapter action = new java.awt.event.MouseAdapter() {
   public void mouseReleased(java.awt.event.MouseEvent e) {
      if(e.getButton() == java.awt.event.MouseEvent.BUTTON3)
        getPopupMenu().show(AppliMenu.this, e.getX(), e.getY());
   }
}
UnComposant.addMouseListener(action);

haut de la page