Java JMenu setAccelerator() problem
Wenn ich setAccelerator() auf Strg + A oder Strg + P und ich starte das Programm es erkennt nicht auf den Tastendruck.
Hier der code:
menuItem = new JMenuItem("About");
menuItem.setActionCommand("About");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_A);
menuItem.addActionListener(this);
menu.add(menuItem);
Dann, wenn es betätigt wird, sollte es die Aktion aufrufen Hörer:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("About")) {
System.out.println("About");
}
}
Mir läuft es in Eclipse auf einem Mac, wenn, was zählt.
InformationsquelleAutor Spencer | 2010-02-27
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Control-A und Control-P sind beide Tastenanschläge, die möglicherweise bereits abgefangen werden, je nach Plattform und je nachdem, was den Tastatur-Fokus hat. Control-Eine möglicherweise bereits abgefangen und interpretiert als "alles markieren" und Ctrl-P kann bereits abgefangen und interpretiert als "paste".
Was ist, wenn Sie wählen Sie eine weniger Häufig verwendete Tastendruck statt "Ctrl-A", wie "Control-Umschalttaste-A" oder "Ctrl-B"? Hier ist eine modifizierte version des Codes, die verwendet Control-Shift-A anstelle von Control-A:
Getestet habe ich diese änderung auf meinem eigenen system mit die JMenu demo aus dem Swing-tutorial, und ich fand (genau so, wie Sie es getan haben), registrieren, Kontrolle-Eine, als das Gaspedal hatte keine Wirkung. Jedoch, registrieren Sie Ctrl-Umschalt-A, wie der Beschleuniger funktioniert perfekt.
nicht sicher, ob es helfen wird, aber du bist mit
Event.CTRL_MASK
stattKeyEvent.CTRL_MASK