Bonjour à tous,

J'aimerais comprendre comment on utilise les mnémoniques et accélérateurs.

A priori, mais je dis bien a priori, j'ai réussi à les utiliser dans le code suivant. Mon problème est que je ne sais pas, une fois le programme lancé, comment on fait pour générer les événements leur correspondant.

J'ai l'impression que certains accélérateurs fonctionnent et d'autres non (genre ceux avec la touche ALT, mais pas ceux avec la touche CTRL...). Enfin, lorsque j'enfonce la touche ALT, je vois bien les lettres soulignées des mnémoniques, mais impossible de les utiliser. Cela dit, je ne sais pas ce qu'il faut faire : ALT + la lettre ne donne rien sur les éléments du menu, alors que si je clique avec la souris sur un menu et que j'appelle ensuite la lettre d'un mnémonique de son sous menu, celui-ci a bien lieu...

Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.awt.Container;
import java.awt.event.*;
 
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.JFrame;
 
@SuppressWarnings("serial")
public class essai3 extends JFrame implements ActionListener {
 
    public essai3() {
        // Caracteristiques de la fenetre
        int width = 200;
        int height = 200;
        this.setTitle("Essai de mnemoniques et accelerateurs");
        this.setBounds(100, 100, width, height);
 
        // Container
        Container container = this.getContentPane();
        container.add(new JPanel());
 
        // Barre de menu
        this.setJMenuBar(this.createMenuBar());
 
    }
 
    public JMenuBar createMenuBar() {
        JMenuBar menuBar;
        JMenu menu, edition;
        JMenuItem menuItem;
 
        // menu bar
        menuBar = new JMenuBar();
 
        // menu
        menu = new JMenu("Menu");
        menu.setMnemonic(KeyEvent.VK_M);
        menuBar.add(menu);
 
        // edition
        edition = new JMenu("Edition");
        edition.setMnemonic(KeyEvent.VK_E);
        menuBar.add(edition);
 
        // contenu de menu
        menuItem = new JMenuItem("Ouvrir", KeyEvent.VK_O);
        menuItem.addActionListener(this);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.ALT_MASK));
        menu.add(menuItem);
 
        menuItem = new JMenuItem("Fermer", KeyEvent.VK_F);
        menuItem.addActionListener(this);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.ALT_MASK));
        menu.add(menuItem);
 
        menuItem = new JMenuItem("Sauvegarder", KeyEvent.VK_S);
        menuItem.addActionListener(this);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK));
        menu.add(menuItem);
 
        // contenu de menu
        menuItem = new JMenuItem("Annuler", KeyEvent.VK_A);
        menuItem.addActionListener(this);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
        edition.add(menuItem);
 
        menuItem = new JMenuItem("Zoom", KeyEvent.VK_Z);
        menuItem.addActionListener(this);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
        edition.add(menuItem);
 
        // Retour
        return menuBar;
    }
 
    public void actionPerformed(ActionEvent e) {
        System.err.println("Action : " + e.getActionCommand());
    }
 
    public static void main(String[] args) {
        essai3 fenetre = new essai3();
        fenetre.setVisible(true);
    }
}