Java에서 콘솔의 키 입력을 한 글자 한 글자 제어할 때 JLine을 사용합니다.

4537 단어 consolejlineJava

개요


이 항목에서는 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를 추천한다.

코드 예제


동작의 견본을 아래에 두다.

좋은 웹페이지 즐겨찾기