2011-08-24 3 views
1

경우 테스트 방법 :키 코드와 키가 밀리고이 코드가

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

public class KeyListener implements KeyEventDispatcher 
{ 
    @Override 
    public boolean dispatchKeyEvent(KeyEvent e) 
    { 
     if(e.getID() == KeyEvent.KEY_PRESSED) 
     { 
      if(e.isDown(Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) && e.getKeyCode() == KeyEvent.VK_V) 
      { 
       paste(); 
      } 
     } 
    } 
} 

문제는 e.isDown이 존재하지 않는다고이다. 무엇 alterntives은 다른 OS'es에 대한 + cmd를 맥에 대한 V제어 + V이되도록 사용할 수 있습니까?

답변

3

KeyEvent는 InputEvent를 확장하므로 isControlDown() InputEvent 메서드를 사용할 수 있습니다.

편집 :

http://lists.apple.com/archives/java-dev/2007/May/msg00243.html

그래서 대신의 KeyEventDispatcher를 사용하여, 당신은 Key Bindings를 사용한다 :이 명령 키에 대한 키 스트로크 (keystroke)를 만드는 방법을 보여줍니다 링크를 발견했다. Key Bindings를 사용하면 (자), 지정된 KeyStroke의 Action를 호출 할 수가 있습니다. 스윙은 키 바인딩을 사용하도록 설계되었습니다.

+1

mac의 명령 버튼은 isControlDown에 의해 처리됩니까? –

+0

아마도 더 나은 접근법을 위해 편집을 참조하십시오. – camickr

+0

[InputStreamEvent]를 반환하는 ['getMenuShortcutKeyMask()'] (http://download.oracle.com/javase/6/docs/api/java/awt/Toolkit.html#getMenuShortcutKeyMask%28%29) +1. ⌘ 키에 해당하는 Mac OS X의 경우 'META_MASK'입니다. – trashgod

관련 문제