2009-10-12 3 views
3

사용자가 주소록의 전화 번호와 같은 것을 편집하도록 허용한다고 가정 해보십시오 (실제로 내가하는 일). 완전히 수정할 수있는 텍스트로 표시 할 변수를 삽입 할 수있는 println에 추가 할 수있는 것이 있습니까? 내가 이것을하고있는 과제는 실제로 이것을 요구하지 않지만, 나는 그것이 멋지다고 생각합니다. Google에서 찾고 있지만 아무 것도 찾을 수 없다면 다시 찾고 싶은 내용과 올바른 용어가 올바른지 여부를 알지 못합니다.사용자가 편집 할 수있는 텍스트 (콘솔 프로그램 용)를 인쇄 할 수 있습니까?

답변

3

아니요, 사용하지 않음 프레임 워크에서 Java가 제공하는 것. 텍스트를 편집하면 입력이 버퍼링 자바로 할 수 없습니다 키 누름에

  1. 행위에 필요 텍스트에 주위 출력을 이동
  2. 을 (누를 수 Enter를 즉, 대기) 또한 가능하지 않습니다.

이것은 JNI 또는 JNA를 사용하여 일부 원시 코드 (Linux의 경우 ncurse, ...)를 사용하여 수행 할 수 있지만 쉽게 작성할 수는 없습니다. 당신이 창을 연 경우

참고 핵심 라이브러리 이외의 것을 사용할 수 있습니다, 그래서 만약 그 기능을 추가하는 것을 목표로 일부 프로젝트를이 있다는 것을, 당신은 예를 http://code.google.com/p/java-console-api/

0

위해 ... 그들에게 시도를 줄 수 콘솔 창처럼 보이고 키 누르기 이벤트에 반응 할 수 있다면 질문하는 것을 수행 할 수 있습니다. 그렇지 않으면, 방금 프로그램을 실행 중이면 프로그램이 실행을 멈추고 콘솔에 제어를 반환하므로 다른 일은 할 수 없다.

그러나 자바의 스크립트 가능한 버전을 사용하는 경우 자신의 쉘을 작성할 수 있습니다. 그러면 쉘이 실행을 중단하지 않으므로 원하는 내용을 수행 할 수 있습니다.

하지만 이는 아마도 당신의 코스를 벗어날 것입니다.

1

기능과 복잡성을 단순성과 휴대의 순서로 다양한 옵션이 있습니다 :

  1. 간단히 응답의 전체 (반환 종료) 라인을 읽고, 정보를 묻는 메시지, 그리고 허용 기본 편집에 사용되는 일반 터미널 입력 기능

  2. 고급 편집을 허용하려면 gnu readline 라이브러리와 같은 것을 사용하십시오. 그래도 위젯 (화면의 특정 위치에 텍스트 입력 상자)이 없어도됩니다. 여기에 자바 구현이 있습니다 : http://java-readline.sourceforge.net/

  3. 커서 위치를 지정하고 텍스트 레이블을 인쇄하고 키 누르기를 처리하고 텍스트 입력 상자를 구현하려면 ncurses와 같은 것을 사용하십시오. 재미 없어.

  4. 이와 같은 텍스트 사용자 인터페이스 라이브러리 (TUI)를 사용 http://www.bmsi.com/tuipeer/