2013-03-30 4 views
1

사용자 키보드 입력을 얻으려고하고 있지만 콘솔을 사용하지 않으면 작동하지 않을 수 있습니다.Java 콘솔에 입력하지 않고 사용자 입력 받기

나는 콘솔에서 입력하지 않고 키보드에서 12345를 입력하는 사용자를 캡처하는 프로그램을 가지고 있습니다. 그런 다음 캡처 된 정수를 반환합니다.

public class InputWithoutConsoleTest { 

public static void main(String[] args) { 
    System.out.println(scanNumber());; 
} 

private static int scanNumber() { 
    try { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     return Integer.parseInt(br.readLine()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 
} 

편집 : 입력 소스가 바코드 스캐너입니다. 바코드를 스캔하여 1234567890 {enter} 형식으로 프로그램에 보냅니다. 이 입력을 Java에서 어떻게 캡처 할 수 있습니까?

+0

파일을 표준 입력으로 파이프 할 수 있습니다. – luketorjussen

+1

이 작업을 수행 할 수 있지만이 작업을 수행하려면 1) 비 핵심 Java 콘솔을 가져 오거나 2)이를 수행 할 Swing GUI와 같은 GUI를 생성해야합니다. –

답변

4

Jnativehook가 적어도 나는이 콘솔에 입력 할 필요없이 "무슨 뜻인지 생각 (글로벌 키보드 (마우스) 입력을 제공하는 좋은 라이브러리에

+0

정확히 내가 원하는 것처럼 보입니다. 많은 감사합니다. – user1296058

+0

+1 누군가의 게시물에서 아주 새로운 것을보고 오랜 시간을 보낸 후 :) –

-1

자바가 샌드 박스 처리되어 있으므로 키 입력을 창 밖에 기록 할 수 있다고 생각하지 않습니다. 다른 언어를 사용하는 것이 훨씬 나을 것입니다.

당신이 정말로 Java에서 그것을 강력히 주장한다면, Hovercraft Full of Eels가 말하고있는 것처럼 Swing으로 뭔가를해야 할 것입니다.

내가 상상하고있는 무엇인가는 보이지 않는 창입니다. 초점을 맞추고있는/앞에 가져 와서 키 입력을 캡처 할 수 있습니다. 이것이 Java에서 가능한지 확실하지 않습니다.

콘솔이 아닌 한 어떤 종류의 보이는 창을 가지고 있어도 괜찮 으면 Jframe을 만들고 스윙이있는 TextBox를 추가하면됩니다. JTextField or JTextArea

0

난 쉽게 키보드 입력을 캡처 할 수 있습니다 "). GUI 나 다른 기능이 필요하지 않으므로 키보드 포커스 나 응용 프로그램이 키보드 입력을받지 못하게 할 수있는 다른 것들과는 독립적입니다.

public class GlobalKeyListenerExample implements NativeKeyListener { 
    public void nativeKeyPressed(NativeKeyEvent e) { 
      System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode())); 
    } 

    public void nativeKeyReleased(NativeKeyEvent e) { 
      System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode())); 
    } 

    public void nativeKeyTyped(NativeKeyEvent e) { 
      System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode())); 
    } 

    public static void main(String[] args) { 
     try { 
      GlobalScreen.registerNativeHook(); 

      GlobalKeyListenerExample listener = new GlobalKeyListenerExample() 
      GlobalScreen.getInstance().addNativeKeyListener(listener); 

     } catch (NativeHookException ex) { 
      System.err.println(ex.getMessage()); 
     } 
    } 
} 

참고 : jnativehook이 얻을 플랫폼 별 네이티브 코드를 사용 jnativehook하면 간단합니다 (examples from the project's wiki 기준)이 같은 시스템에서 일어나는 모든 키를 눌러 통보됩니다 글로벌 키 리스너를 등록 할 수 있습니다 키보드 및 마우스 이벤트에 대한 전역 액세스를 제공하지만 Windows, Mac OS 및 Linux에서이 기능을 제공하므로 대부분의 경우에 사용할 수 있습니다. 플랫폼에 문제가 있으면 프로젝트의 버그 추적기에보고하십시오.

관련 문제