2014-09-19 3 views
0

KeyListener을 사용하여 'a'문자를 누르면 콘솔로 간단하게 인쇄하려고합니다. 기본적으로 프로그램을 실행하면 열리고 닫히는 현상이 발생합니다. 키를 계속 누르고 있으면 더 오래 실행되지만 콘솔에는 인쇄되지 않습니다. 내 코드에 무슨 문제가 있습니까?키를 누를 때 수행되는 동작

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

public class APresser implements KeyListener { 

    private static int keyCode; 

    public static void main(String[] args) { 

    } 

    public void aPressed(KeyEvent e) { 
     keyCode = e.getKeyCode(); 
     if (keyCode == KeyEvent.VK_A) { 
      System.out.println("A was pressed!"); 
     } 
    } 

    public void keyPressed(KeyEvent e) { 

     aPressed(e); 


    } 

    @Override 
    public void keyTyped(KeyEvent e) { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) { 

    } 
} 

답변

1

KeyListener는 AWT 프레임 워크의 인터페이스이며, 이는 GUI에 사용되는 것으로 의도된다 콘솔 기반 어플리케이션에 사용될 수 없다. 콘솔에서 키 입력을 감지

, 당신은, 사용자가

당신은 어떤 종류의 저주 라이브러리를 사용할 수 있습니다를 입력 누를 때까지 기다릴 필요가 자바는 기본적으로 않는 것이 아닙니다 그러나 이것은 통합에 함께 제공 귀하의 프로그램의 유용성을 제한 할 수있는 네이티브 시스템

마찬가지로 프로그램에 포커스가없는 동안 (백그라운드에서) 키 스트로크를 모니터링하는 것은 Java가하는 것과 다르며 JNI/JNA 솔루션을 사용해야합니다

+0

좀 더 설명해 주시겠습니까? 이 JNI/JNA 솔루션에 대해? – thetypist

+0

내가 많은 경험을했기 때문에 검색 결과가 있습니다. 몇 가지 예가 있습니다 ... – MadProgrammer

+0

죄송합니다 ... 그래서 요? 그게 무슨 뜻 이죠? – thetypist

관련 문제