Wie können in Java Menu-Shortcuts erkannt werden?

Die Klasse KeyStroke definiert eine überladene Methode getKeyStroke(), die betriebssystemeigene Tastaturbefehle erkennt und abfangen kann.

Ein Menu-Shortcut besteht i.a. aus der gleichzeitigen Eingabe einer Kombination aus einer oder mehreren Modifikator-Tasten und einer Buchstaben- oder Zahlentaste. Beide Werte werden als Parameter der Methode getKeyStroke() übergeben.
Um die Modifikator-Taste auf Programmebene abzufangen, muss zunächst die jeweilige dem Menu zugewiesene Metataste des Betriebssystems ermittelt werden. Dies erfolgt durch die Methode getMenuShortcutKeyMask() der Klasse Toolkit . Sie gibt einen int -Wert zurück, zu dem bei Bedarf noch derjenige einer oder mehrerer Modifikator-Tasten addiert werden kann. Sie können durch den int -Wert eines statischen Feldes der Klasse InputEvent repräsentiert werden.
Der zweite Parameter, der Tastenwert des jeweiligen Befehls, wird durch ein statisches Feld der Klasse KeyEvent erfasst.
Das Beispiel zeigt dies an den Beispielen der Shortcuts für die Befehle Speichern und Speichern unter....
Die Koppelung der Shortcuts an die Menubefehle erfolgt durch die Methode setAccelerator() der Klasse JMenuItem , der der KeyStroke als Parameter übergeben wird.

import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class ShortCuts {

    public static void main(String[] args) {
        // Speichern
        KeyStroke sKS = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit
                .getDefaultToolkit().getMenuShortcutKeyMask());
        // Speichern unter...
        KeyStroke saKS = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit
                .getDefaultToolkit().getMenuShortcutKeyMask() + InputEvent.SHIFT_DOWN_MASK);
        
        JMenuItem saveItem = new JMenuItem();
        JMenuItem saveAsItem = new JMenuItem();
        saveItem.setAccelerator(sKS);
        saveAsItem.setAccelerator(saKS);
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.