[java] Jansi를 활용하여 자바에서 터미널 창에 로딩중인 아이콘 표시하기

자바 콘솔 애플리케이션에서 사용자에게 로딩 중인 상태를 알리기 위해 터미널 창에 아이콘을 표시하는 기능은 매우 유용합니다. 이를 위해 Jansi라는 라이브러리를 활용할 수 있습니다. Jansi는 콘솔 출력을 시각적으로 꾸밀 수 있는 기능을 제공하는 라이브러리입니다.

Jansi 라이브러리 추가하기

Jansi 라이브러리를 사용하기 위해 먼저 의존성을 추가해야 합니다. Maven 의존성을 추가하기 위해서는 pom.xml 파일에 다음 코드를 추가해주세요.

<dependency>
    <groupId>org.fusesource.jansi</groupId>
    <artifactId>jansi</artifactId>
    <version>1.18</version>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 다음 코드를 추가해주세요.

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

의존성을 추가한 후, 프로젝트를 새로고침하여 Jansi 라이브러리를 가져와주세요.

로딩 아이콘 출력하기

이제 Jansi를 사용하여 터미널에 로딩 중인 상태를 표시하는 로딩 아이콘을 출력해보겠습니다. 다음은 로딩 아이콘을 출력하는 예제 코드입니다.

import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;

public class LoadingIconExample {
    public static void main(String[] args) {
        // ANSI 색상 설정
        AnsiConsole.systemInstall();
        
        // 로딩 아이콘 출력
        String[] icons = {
            "\u25D0\u25D1\u25D2\u25D3",
            "\u25CB\u25CF",
            "\u25A0\u25A1",
            "\u25F6\u25F7"
        };
        
        while (true) {
            for (String icon : icons) {
                System.out.print("\r" + Ansi.ansi().eraseLine(Ansi.Erase.ALL).a(icon));
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

위의 코드는 터미널 창에 로딩 아이콘을 반복적으로 출력합니다. 로딩 아이콘은 icons 배열에 저장되어 있으며, 반복적으로 출력하고 지우고를 반복하면서 로딩 중임을 시각적으로 나타냅니다.

프로그램을 실행하면 터미널 창에서 로딩 아이콘이 계속해서 반복적으로 출력됩니다. Ctrl+C를 눌러 프로그램을 중지할 수 있습니다.

마치며

Jansi를 사용하여 자바에서 터미널 창에 로딩중인 아이콘을 표시하는 방법을 알아보았습니다. 이를 활용하면 사용자에게 로딩 상태를 직관적으로 알릴 수 있으며, 사용성을 향상시킬 수 있습니다. Jansi의 다양한 기능을 활용하여 콘솔 애플리케이션을 더욱 다채롭게 개발해보세요.

관련 문서: