Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

accelerator menu ?

4 réponses
Avatar
Thierry Schembri
Bonjour,

J'ai une question bête : pourquoi si je fais :

menu_item.setAccelerator(KeyStroke.getKeyStroke('1'))

l'accelérateur fonctionne en appuyant sur la touche "1" du clavier
alphanumérique mais ne répond pas si j'appuie sur le "1" du pavé numérique ?

Il y a une ruse ?

Thierry

4 réponses

Avatar
Rui
Bonjour,

J'ai une question bête : pourquoi si je fais :

menu_item.setAccelerator(KeyStroke.getKeyStroke('1'))

l'accelérateur fonctionne en appuyant sur la touche "1" du clavier
alphanumérique mais ne répond pas si j'appuie sur le "1" du pavé
numérique ?

Il y a une ruse ?

Thierry




Y a une différence entre le masque VK_1 et VK_NUMPAD1. Faut tester les deux.

Rui

Avatar
Thierry Schembri
oui, mais on ne peut pas mettre deux accelerators sur un meme menu item...
Avatar
Rui
oui, mais on ne peut pas mettre deux accelerators sur un meme menu item...




Toutes mes excuses.

Le plus fort, c'est que j'avais écrit vite fait la classe suivante

public class AcceleratorsTest extends JFrame {

private JMenuBar menuBar = null;

private JMenu fileMenu = null;

private JMenuItem exitMenuItem = null;

public AcceleratorsTest(String title) {

exitMenuItem = new JMenuItem("Exit");
exitMenuItem.setAccelerator(KeyStroke.getKeyStroke('1'));

fileMenu = new JMenu("File");
fileMenu.add(exitMenuItem);

menuBar = new JMenuBar();
menuBar.add(fileMenu);

this.setJMenuBar(menuBar);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(100, 50);
}

public static void main(String[] args) {
new AcceleratorsTest("test").setVisible(true);
}
}

Qui répond parfaitement au deux touches ("1" et "1 pavé num").

Question idiote... t'as activé ton clavier numérique?

Avatar
Rui
oui, mais on ne peut pas mettre deux accelerators sur un meme menu item...


.. qui répond bien surtout quand on oubie pas de faire le copier-coller

du code de l'actionPerformed... (décidément)

public class AcceleratorsTest extends JFrame {

private JMenuBar menuBar = null;

private JMenu fileMenu = null;

private JMenuItem exitMenuItem = null;

public AcceleratorsTest(String title) {

exitMenuItem = new JMenuItem("Exit");
exitMenuItem.setAccelerator(KeyStroke.getKeyStroke('1'));
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Touche 1 pressée");
System.exit(0);
}
});

fileMenu = new JMenu("File");
fileMenu.add(exitMenuItem);

menuBar = new JMenuBar();
menuBar.add(fileMenu);

this.setJMenuBar(menuBar);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(100, 50);
}

public static void main(String[] args) {
new AcceleratorsTest("test").setVisible(true);
}
}

Tu devrai peut-être exposer la partie de ton code qui fait la sortie, ce
pourrait être le problème et y aura sûrement des gens pour t'aider,
parce que j'y pensais, c'est peut-être simplement ton code exécuté quand
t'appuies sur la touche qui coince...