2011-02-10 6 views
2

Java에서 Process의 입력, 오류 및 출력 스트림에 대한 액세스를 제공하는 교차 플랫폼 솔루션을 만들고 싶습니다.Java의 명령 행 인터페이스

기본적으로 내가 만들고자하는 것은 프로세스의 출력 및 오류 스트림을 표시하고 입력 스트림에 데이터를 제공 할 수있는 텍스트 영역입니다. 즉, 애플리케이션을 실행할 때 Eclipse가 이미 콘솔에서 제공하는 것.

지금이 기본 구현은 쉽습니다. 입력 스트림에 모든 키 누르기 만 보내면됩니다. 그러나 물론 붙여 넣기, 백 스페이스 및 화살표 키를 사용하여 문제가 발생하여 ctrl-C 등의 처리가 가능합니다.

데이터를 프로세스의 입력 스트림으로 보내기 전에 기다려야 할 것 같습니다. 하지만 뭘 기다려? 각 반환 키에 입력 된 (및 붙여 넣은) 텍스트를 모두 보내야합니까? 또는 간격 후에? 약 ctrl-C, ctrl-X 등등은 어떨까요? 화살표 키 움직임을 입력 스트림으로 보냅니 까?

+0

붙여 넣기, 백 스페이스 등으로 어떤 문제점을 보았습니까? 키 이벤트를 리디렉션하는 구성 요소도 모든 이벤트를 처리해야한다고 생각합니다. 그래서 당신이 바라는대로 일어나지 않는 일들이 있다면, 당신이 올바른 구성 요소를 사용하고있는 것처럼 보일 것입니다. –

+0

누군가가 붙여 넣을 때 구성 요소에 Ctrl + V 이벤트가 수신되지만 그보다 훨씬 많은 부분이 텍스트 영역에 추가됩니다. 이것도 역시 감지 할 수 있지만, 언제 그것을 입력 스트림으로 보냅니 까? 곧? 하지만 누군가가 뭔가 붙여 넣고 백 스페이스를 몇 번 누른 다음 돌아 오는 경우 어떻게 될까요? –

+0

버퍼링 된 스트림을 사용하고 있습니까? 버퍼링 된 스트림을 사용하고 각 리턴 키를 즉시 보냅니다. 버퍼링 된 기능은 백 스페이스와 화살표 키를 처리해야합니다. – hauntsaninja

답변

0

아무 것도 기다리지 말고 단순히 보내기 만하면되지만 GUI 이벤트 스레드가 아닌 별도의 스레드로 보내야하므로 후자는 차단되지 않습니다.

특수 문자를 처리하려면 텍스트 콘솔에 이러한 기호를 입력 할 때 얻을 수있는 것을보십시오.

1

가장 쉽고 편리한 방법은 텍스트 영역의 전체 내용을 보내고 지우는 "보내기"버튼을 사용하는 것입니다. 인스턴트 메신저 앱이나 SO 주석 편집기를 생각해보십시오.

+0

그의 질문은 명령 줄 응용 프로그램에 관한 것입니다. :) 그래서 단추와 영역이 도움이되지 않습니다. – Simeon

+1

@ 시므온 "기본적으로, 내가 만들고자하는 것은 프로세스의 출력을 표시하는 텍스트 영역입니다. 이것이 내가 GUI 응용 프로그램이라고 생각하게 만들었지 만 그렇지 않다면 충분히 공정합니다. – biziclop

+0

(코멘트 읽기에서) 나는 틀렸고 실제로 GUI를 가지고있다. 나는이 질문을 더주의 깊게 읽어야했다. 사과 :) – Simeon