Java에서 콘솔의 키 입력을 한 글자 한 글자 제어할 때 JLine을 사용합니다.
개요
이 항목에서는 Java 콘솔 입력/출력에서 실행되는 프로그램을 작성할 때 입력을 한 글자씩 처리하는 방법을 알 수 있습니다.
배경
Java에서는 표준 입력 출력을 처리하는 흐름이 있지만 한 글자 한 글자 가져오기 입력은 가능하지만 키 입력의 이벤트를 직접 제어할 수 없습니다.
따라서 예를 들어'계산기'프로그램을 만들 때'+'를 누르면 바로 어떤 처리를 하는지 표준 라이브러리만으로는 실현할 수 없다.
JLine 사용
J라인이 뭐예요?
JLine3는 CUI 어플리케이션을 개발할 때 사용할 수 있는 라이브러리입니다.몇몇 유명한 OSS에서도 사용되고 있다.
JLine3는 Windows 환경 등의 플랫폼에서 자신의 터미널을 제어할 수도 있습니다.여기에는 플랫폼 로컬 라이브러리가 필요하기 때문에 JNA 또는 JANSI를 사용하는 방법을 제공합니다.이 항목은 JNA를 사용합니다.
코드 예제
다음 코드를 사용하면 모든 문자가 터미널에서 입력되어 표준 출력에 바로 표시됩니다.package com.hrkt.commandlinecalculator;
import lombok.extern.slf4j.Slf4j;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
@Slf4j
public class CommandlineInterface {
public void run(String... args) {
log.info("hello");
try(Terminal terminal = TerminalBuilder.terminal()) {
int ch = 0;
while ((ch = terminal.reader().read()) != 0x09){
// TAB(0x09)で抜ける
char c = (char)ch;
System.out.println(String.format("%d, %c", ch, ch));
}
} catch(IOException e) {
log.error(e.getMessage(), e);
}
}
}
다음 그림과 같습니다.
끝내다
이 항목에서는 Java에서 콘솔의 키 입력을 제어하는 방법에 대해 설명합니다.
JLine2를 사용한다는 기사도 볼 수 있지만 개발이 끝났으니 JLine3를 추천한다.
코드 예제
동작의 견본을 아래에 두다.
Reference
이 문제에 관하여(Java에서 콘솔의 키 입력을 한 글자 한 글자 제어할 때 JLine을 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hrkt/items/885f1c3526af03939c54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Java에서는 표준 입력 출력을 처리하는 흐름이 있지만 한 글자 한 글자 가져오기 입력은 가능하지만 키 입력의 이벤트를 직접 제어할 수 없습니다.
따라서 예를 들어'계산기'프로그램을 만들 때'+'를 누르면 바로 어떤 처리를 하는지 표준 라이브러리만으로는 실현할 수 없다.
JLine 사용
J라인이 뭐예요?
JLine3는 CUI 어플리케이션을 개발할 때 사용할 수 있는 라이브러리입니다.몇몇 유명한 OSS에서도 사용되고 있다.
JLine3는 Windows 환경 등의 플랫폼에서 자신의 터미널을 제어할 수도 있습니다.여기에는 플랫폼 로컬 라이브러리가 필요하기 때문에 JNA 또는 JANSI를 사용하는 방법을 제공합니다.이 항목은 JNA를 사용합니다.
코드 예제
다음 코드를 사용하면 모든 문자가 터미널에서 입력되어 표준 출력에 바로 표시됩니다.package com.hrkt.commandlinecalculator;
import lombok.extern.slf4j.Slf4j;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
@Slf4j
public class CommandlineInterface {
public void run(String... args) {
log.info("hello");
try(Terminal terminal = TerminalBuilder.terminal()) {
int ch = 0;
while ((ch = terminal.reader().read()) != 0x09){
// TAB(0x09)で抜ける
char c = (char)ch;
System.out.println(String.format("%d, %c", ch, ch));
}
} catch(IOException e) {
log.error(e.getMessage(), e);
}
}
}
다음 그림과 같습니다.
끝내다
이 항목에서는 Java에서 콘솔의 키 입력을 제어하는 방법에 대해 설명합니다.
JLine2를 사용한다는 기사도 볼 수 있지만 개발이 끝났으니 JLine3를 추천한다.
코드 예제
동작의 견본을 아래에 두다.
Reference
이 문제에 관하여(Java에서 콘솔의 키 입력을 한 글자 한 글자 제어할 때 JLine을 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hrkt/items/885f1c3526af03939c54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package com.hrkt.commandlinecalculator;
import lombok.extern.slf4j.Slf4j;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
@Slf4j
public class CommandlineInterface {
public void run(String... args) {
log.info("hello");
try(Terminal terminal = TerminalBuilder.terminal()) {
int ch = 0;
while ((ch = terminal.reader().read()) != 0x09){
// TAB(0x09)で抜ける
char c = (char)ch;
System.out.println(String.format("%d, %c", ch, ch));
}
} catch(IOException e) {
log.error(e.getMessage(), e);
}
}
}
이 항목에서는 Java에서 콘솔의 키 입력을 제어하는 방법에 대해 설명합니다.
JLine2를 사용한다는 기사도 볼 수 있지만 개발이 끝났으니 JLine3를 추천한다.
코드 예제
동작의 견본을 아래에 두다.
Reference
이 문제에 관하여(Java에서 콘솔의 키 입력을 한 글자 한 글자 제어할 때 JLine을 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hrkt/items/885f1c3526af03939c54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)