2010-12-16 4 views
4

실행 취소/다시 실행 기능이 필요한 작은 Java 애플릿을 만들고 있습니다. 다음은 단축키를 설정하는 코드입니다 (Windows에서 잘 작동 함).Java/Swing에서 Ctrl + Z/Command + Z를 어떻게 구현합니까?

내 질문은 : 어떻게 내가 그것을 사용하는 명령 + Z는 Mac에서? 그냥 System.getProperty ("os.name")를 체크해야할까요, 아니면 더 우아한 대안이 있을까요 ??

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); 
    } 
} 

감사합니다,

답변

8

아 신경 끄시 고, 나는이 모든 플랫폼에서 실행 취소해야 여기 http://www.devdaily.com/blog/post/jfc-swing/how-program-apple-command-key-keystroke-java-swing-mac-osx

을 발견했다.

KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) 
+0

이 취소 작동 (CTRL-Z 대 cmd를-Z),하지만 다시 실행을위한 (CTRL-Y 시프트-CMD-Z 대). REDO 키 스트로크에 os.name이 필요하다고 걱정됩니다. –

+0

@ChristopherBruns 네가 옳은 것 같아. Microsoft Office Mac은 편안함이 있다면 2011 년까지 Cmd + Y를 사용했습니다. –

관련 문제