2011-02-17 8 views
1

편집중인 JTextArea를 둘러싼 JScrollPane을 포함하는 콘텐츠 창이 있는데 (바로 지금) 어떤 키가 눌려지고 있는지에 대한 정보를 표시하기 만합니다. 이 KeyListener를 취득합니다).배경 프레임에 Java KeyListener 사용

KeyListener가 JTextArea에 있고 프레임을 선택하면 모든 것이 올바르게 작동합니다. 그러나 다른 윈도우를 선택해도 키 누름이 등록되도록하고 싶습니다. 이걸 할 수있는 방법은 없나요?

감사합니다.

답변

3

나는 과거에 그랬지만 정확하게 기억하지 못합니다. 나는 그것과 비슷하다고 생각한다 :

KeyEventDispatcher dispatcher = new KeyEventDispatcher() 
{ 
    public boolean dispatchKeyEvent(KeyEvent e) 
    { 
     System.out.println(e.getKeyChar()); 
     return false; 
    } 
}; 

DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher); 

사용자 정의 코드로 SysOut을 수정하기 만하면된다. 이벤트가 전달되지 않도록하려면 메서드가 false 대신 true를 반환해야합니다. 나는 또한 당신의 문제를 해결할 수 this question을 발견.

+0

이 수업을 잊어 버렸습니다. 알림 주셔서 감사합니다! 1 + –

+0

코드를 사용하여 수행중인 작업을 확인하지만 주요 메서드에서 현재 키보드 포커스를 지속적으로 확인하는 좋은 방법이 확실하지 않습니다. – davidcelis

0

듣기를 수행하는 구성 요소에 포커스가없는 경우 키를 수신해야하는 경우 key bindings을 사용하십시오. 반면에 다른 응용 프로그램에 포커스가있을 때 키를 듣고 자한다면 가장 좋은 방법은 자바를 사용하지 않고 다음과 같이 OS에 가까워 질 수있는 프로그래밍 언어를 사용하는 것입니다. C 또는 C++.

관련 문제