2012-04-15 10 views
1

Ich möchte ein Accelerator auf ein JMenuItem setzen.Java - Beschleuniger zu einem JMenuItem hinzufügen

Im Moment bin ich Einstellung es wie dieses

openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); 

und es funktioniert, aber ich will nicht ctrl + o als Beschleuniger. Ich möchte 'space' als Beschleuniger haben, aber ich habe keine Methode gefunden, mit der ich einen KeyStroke erzeugen kann, der 'space' entspricht.

KeyStroke.getStroke() 

entweder nimmt ein char oder (int, int). Ich habe auch keinen passenden Char gefunden.

Antwort

3

..did nicht finden auch keine char entsprechend dem Leerzeichen.

KeyEvent.VK_SPACE

Ich wäre nicht überrascht, wenn Schaukel es ignoriert, da ' ' sind ein ungewöhnlichen & hart Beschleuniger zu sehen.

+0

Ich sagte, ich fand nicht 'char' entsprechend dem Raum. 'KeyEvent.VK_SPACE' ist ein int und es gibt keine Methode wie KeyStroke.getStroke (int), die nur int. Ich muss auch einen Modifikator liefern, den ich nicht will. –

+0

Also lass mich das klarstellen. Wenn der Benutzer auf eine Schaltfläche klickt und "Tempo" drückt, um ihn zu aktivieren, möchten Sie die Menüaktion aufrufen? Lassen Sie mich "ungewöhnlichen und schwer zu erkennenden Accelerator" auf "nicht ausführbare GUI" upgraden. Mein Rat lautet: Wählen Sie einen brauchbaren Beschleunigerbrief. Was ist der Text im Menüpunkt? –

+1

+1 für den Benutzer denken. :-) Mehr [hier] (http://stackoverflow.com/a/10161155/230513). – trashgod

3

Die meisten UI-Delegaten rendern einen KeyEvent.VK_SPACE Beschleuniger mit etwas wie dem METRICAL TETRASEME: ⏘ (U+23D8). Zum Beispiel könnte ein Action diese Zeilen enthalten:

static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); 
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, MASK)); 
+2

Beachten Sie, dass Mac OS X diesen Beschleuniger verwendet, um eine [Spotlight Suche] (http://en.wikipedia.org/wiki) zu starten/Spotlight_% 28software% 29). – trashgod