Wie können in Java Menu-Shortcuts erkannt werden?
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.