Как использовать команду " color 3 " в консоли при помощи java?

Рейтинг: 1Ответов: 1Опубликовано: 26.02.2023

Мне хочется чтобы при запуске консольной программы я мог использовать консольные команды. Проще говоря мне нужно в коде прописать команду (в данном случае "color 3") и после запуска программы эти команды выполнялись в консоли.

В C++ это можно сделать так:

system("color 3");

А на java фиг знает как :)

Ответы

▲ 2

В Java для изменения цвета символов (а также цвета фона, стиля шрифта и т.п.) можно использовать ANSI-последовательности (англ.), если терминал их поддерживает.

Пример кода для выбора цвета:

public class Main
{
    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_BLACK = "\u001B[30m";
    public static final String ANSI_RED = "\u001B[31m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_YELLOW = "\u001B[33m";
    public static final String ANSI_BLUE = "\u001B[34m";
    public static final String ANSI_PURPLE = "\u001B[35m";
    public static final String ANSI_CYAN = "\u001B[36m";
    public static final String ANSI_WHITE = "\u001B[37m";
    
    public static final String ANSI_BLACK_BACKGROUND = "\u001B[40m";
    public static final String ANSI_RED_BACKGROUND = "\u001B[41m";
    public static final String ANSI_GREEN_BACKGROUND = "\u001B[42m";
    public static final String ANSI_YELLOW_BACKGROUND = "\u001B[43m";
    public static final String ANSI_BLUE_BACKGROUND = "\u001B[44m";
    public static final String ANSI_PURPLE_BACKGROUND = "\u001B[45m";
    public static final String ANSI_CYAN_BACKGROUND = "\u001B[46m";
    public static final String ANSI_WHITE_BACKGROUND = "\u001B[47m";
    
    
    public static void outRed(String msg) {
        out(ANSI_RED, msg);
    }
    
    public static void outGreen(String msg) {
        out(ANSI_GREEN, msg);
    }
    
    public static void outYellow(String msg) {
        out(ANSI_YELLOW, msg);
    }
    
    private static void out(String color, String msg) {
        out(color, "", msg);
    }

    private static void out(String color, String bgColor, String msg) {
        System.out.println(color + bgColor + msg + ANSI_RESET);
    }

    public static void main(String[] args) {        
        out(ANSI_WHITE, ANSI_RED_BACKGROUND, "  RED  ");
        outYellow(" YELLOW ");
        outGreen (" GREEN  ");
    }
}

введите сюда описание изображения На несовместимом терминале эти последовательности не будут корректно обрабатываться:


Другие варианты реализации (через enum, с дополнительными кодами для изменения шрифта и т.п.) можно найти по ссылке на основном StackOverflow (англ.): How to print color in console using System.out.println?