2010-12-16 8 views
4

Ich arbeite an einem kleinen Java-Applet, das Funktionen zum Rückgängigmachen/Wiederherstellen benötigt. Hier ist Code zum Einrichten der Hotkeys (funktioniert gut unter Windows).Wie implementiere ich Strg + Z/Befehl + Z in Java/Swing?

Meine Frage ist: Wie mache ich es Befehl + Z auf Mac? Soll ich einfach System.getProperty ("os.name") überprüfen oder gibt es eine elegantere Alternative ??

private void setupUndoHotkeys() { 
    String UNDO = "Undo action key"; 
    String REDO = "Redo action key"; 
    Action undoAction = new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
      undo(); 
     } 
    }; 
    Action redoAction = new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
      redo(); 
     } 
    }; 

    getActionMap().put(UNDO, undoAction); 
    getActionMap().put(REDO, redoAction); 

    InputMap[] inputMaps = new InputMap[] { 
     getInputMap(JComponent.WHEN_FOCUSED), 
     getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), 
     getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW), 
    }; 
    for(InputMap i : inputMaps) { 
     i.put(KeyStroke.getKeyStroke("control Z"), UNDO); 
     i.put(KeyStroke.getKeyStroke("control Y"), REDO); 
    } 
} 

Danke,

Neal

Antwort

8

vergiss Ah, fand ich es hier http://www.devdaily.com/blog/post/jfc-swing/how-program-apple-command-key-keystroke-java-swing-mac-osx

Diese auf jeder Plattform rückgängig gemacht werden soll.

+0

Dies funktioniert für Rückgängig (Strg-Z vs. cmd-Z), aber nicht für Wiederholen (Strg-Y vs Shift-Cmd-Z). Ich mache mir Sorgen, dass os.name für Redo key stroke benötigt wird. –

+0

@ChristopherBruns Ich fürchte, du hast Recht. Wenn es Komfort ist, verwendete Microsoft Office Mac bis 2011 Cmd + Y. –

Verwandte Themen