2015-01-31 5 views
0

집중하지 않는 창이 있다고 가정 해 봅시다. KeyListener을 사용하는 다른 키 누르기 방법이 있습니까?다른 키 누르기 방법

import javax.swing.JFrame; 

public class Main { 

    public static void main(String[] args) { 
     Window w = new Window(); 
    }  
} 

class Window extends JFrame { 
    private static final long serialVersionUID = -6791503228233798055L; 
    public JFrame fr; 

    Window() { 
     fr = new JFrame(); 
     fr.setVisible(true); 
     fr.setSize(500, 500); 
     fr.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 
} 

집중식 창과 KeyListener없이 키를 잡는 방법은 무엇입니까?

+1

[키 바인딩] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)이 귀하가 찾고있는 것일 수 있습니다. 이것은 어떤 종류의 포커스가 필요하지만 특정 컴퍼넌트에 포커스를 두지 않아도되는 요소가 WHEN_IN_FOCUS_WINDOW가되도록 포커스를 요구할 수 있습니다. *** 포커스가있는 GUI 요소가 없거나 GUI없이 ** 주요 이벤트를 잡으려면 [네이티브 리스너] (http://code.google.com/p/jnativehook/) *를 사용해야합니다. –

+0

감사합니다 @ VinceEmigh하지만 오히려 C++를 사용합니다. –

+1

기본 리스너는 C++ (또는 C 또는 어셈블리와 같은 플랫폼 기본 언어)를 사용합니다. Java Native Interface (JNI)라는 것을 사용하여 네이티브 세부 사항에 액세스하고 있습니다. JNI를 사용하여 자신 만의 구현을 작성하여 동일하게 달성 할 수 있지만 왜 시간 낭비로 인해 휠을 다시 발명합니까? –

답변

-2

는 단지 인터페이스입니다. 아무 것도하지 않습니다.

이벤트가 발생했음을 알리는 누군가가 필요합니다. 보통 당신은 어떤 창이나 창에 이벤트에 대해 알고 싶어하는 누군가 자신을 전달합니다. JVM은 이런 식으로 운영 체제 자체에 등록하는 것을 허용하지 않습니다. 그렇게하려면 외부 라이브러리가 필요할 것입니다.

Here 매우 비슷한 주제가 있습니다.

+2

이런 종류의 일을 매우 쉽게 만들어주는 많은 수의 기본 청취자가 있습니다. 이 질문은 "중요한 사건을 파악할 수있는 다양한 방법에 대해서도 묻습니다."창이없는 핵심 사건을 어떻게 파악할 수 있습니까? 그리고 왜 우리가 할 수 없을지는 묻지 않습니다. " –

+0

외부 라이브러리 사용에 대한 귀하의 제안에 따라 업데이트되었습니다. – damienix