Как печатать цвет в консоли с помощью System.out.println?

Как напечатать цвет в консоли? Я хочу показывать данные в цветах, когда процессор отправляет данные и в разных цветах при получении данных.

Если ваш терминал поддерживает его, вы можете использовать escape-коды ANSI для использования цвета в вашем выходе. Он обычно работает для приглашений оболочки Unix; однако он не работает для командной строки Windows (хотя это работает и для Cygwin). Например, вы можете определить константы, подобные этим для цветов:

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"; 

Затем вы можете обратиться к ним по мере необходимости.

Например, используя приведенные выше константы, вы можете сделать следующий красный текст на поддерживаемых терминалах:

 System.out.println(ANSI_RED + "This text is red!" + ANSI_RESET); 

Обновление. Возможно, вы захотите проверить библиотеку Jansi . Он предоставляет API и поддерживает Windows с использованием JNI. Я еще не пробовал; однако он выглядит многообещающим.

Обновление 2: Кроме того, если вы хотите изменить цвет фона текста на другой цвет, вы также можете попробовать следующее:

 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"; 

Например:

 System.out.println(ANSI_GREEN_BACKGROUND + "This text has a green background but default text!" + ANSI_RESET); System.out.println(ANSI_RED + "This text has red text but a default background!" + ANSI_RESET); System.out.println(ANSI_GREEN_BACKGROUND + ANSI_RED + "This text has a green background and red text!" + ANSI_RESET); 

Я создал библиотеку под названием JCDP ( Java Colorured Debug Printer ).

Для Linux он использует escape-коды ANSI, упомянутые WhiteFang, но абстрагирует их, используя слова вместо кодов, которые намного интуитивно понятны. Это становится так же просто:

 print("Hello World!", Attribute.BOLD, FColor.YELLOW, BColor.GREEN); 

Для Windows он фактически включает библиотеку JAnsi, но создает над ним слой абстракции, поддерживая интуитивно понятный и простой интерфейс, созданный для Linux.

Эта библиотека лицензируется по лицензии MIT, поэтому не стесняйтесь ее использовать.

Взгляните на repository github JCDP .

Ниже приведен список цветов в classе Java с public static полями

Применение

 System.out.println(ConsoleColors.RED + "RED COLORED" + ConsoleColors.RESET + " NORMAL"); 

Примечание. Не забудьте использовать RESET после печати, поскольку эффект останется, если он не очищен

 public class ConsoleColors { // Reset public static final String RESET = "\033[0m"; // Text Reset // Regular Colors public static final String BLACK = "\033[0;30m"; // BLACK public static final String RED = "\033[0;31m"; // RED public static final String GREEN = "\033[0;32m"; // GREEN public static final String YELLOW = "\033[0;33m"; // YELLOW public static final String BLUE = "\033[0;34m"; // BLUE public static final String PURPLE = "\033[0;35m"; // PURPLE public static final String CYAN = "\033[0;36m"; // CYAN public static final String WHITE = "\033[0;37m"; // WHITE // Bold public static final String BLACK_BOLD = "\033[1;30m"; // BLACK public static final String RED_BOLD = "\033[1;31m"; // RED public static final String GREEN_BOLD = "\033[1;32m"; // GREEN public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW public static final String BLUE_BOLD = "\033[1;34m"; // BLUE public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE public static final String CYAN_BOLD = "\033[1;36m"; // CYAN public static final String WHITE_BOLD = "\033[1;37m"; // WHITE // Underline public static final String BLACK_UNDERLINED = "\033[4;30m"; // BLACK public static final String RED_UNDERLINED = "\033[4;31m"; // RED public static final String GREEN_UNDERLINED = "\033[4;32m"; // GREEN public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW public static final String BLUE_UNDERLINED = "\033[4;34m"; // BLUE public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE public static final String CYAN_UNDERLINED = "\033[4;36m"; // CYAN public static final String WHITE_UNDERLINED = "\033[4;37m"; // WHITE // Background public static final String BLACK_BACKGROUND = "\033[40m"; // BLACK public static final String RED_BACKGROUND = "\033[41m"; // RED public static final String GREEN_BACKGROUND = "\033[42m"; // GREEN public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW public static final String BLUE_BACKGROUND = "\033[44m"; // BLUE public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE public static final String CYAN_BACKGROUND = "\033[46m"; // CYAN public static final String WHITE_BACKGROUND = "\033[47m"; // WHITE // High Intensity public static final String BLACK_BRIGHT = "\033[0;90m"; // BLACK public static final String RED_BRIGHT = "\033[0;91m"; // RED public static final String GREEN_BRIGHT = "\033[0;92m"; // GREEN public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW public static final String BLUE_BRIGHT = "\033[0;94m"; // BLUE public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE public static final String CYAN_BRIGHT = "\033[0;96m"; // CYAN public static final String WHITE_BRIGHT = "\033[0;97m"; // WHITE // Bold High Intensity public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK public static final String RED_BOLD_BRIGHT = "\033[1;91m"; // RED public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW public static final String BLUE_BOLD_BRIGHT = "\033[1;94m"; // BLUE public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE public static final String CYAN_BOLD_BRIGHT = "\033[1;96m"; // CYAN public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE // High Intensity backgrounds public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m"; // CYAN public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m"; // WHITE } 

Довольно портативный способ сделать это – с исходными escape-последовательностями. См. http://en.wikipedia.org/wiki/ANSI_escape_code

[отредактировано для user9999999 по 2017-02-20]

Java не «обрабатывает коды», это правда, но Java выводит то, что вы сказали ему для вывода. это не ошибка Java, что консоль Windows рассматривает ESC (chr (27)) как еще один символ (←).

вы заставили меня загрузиться в Windows. ты должен мне, брат

Вы можете сделать это, используя escape-последовательности ANSI. Я на самом деле собрал этот class в Java для тех, кто хотел бы простую обходную проблему для этого. Это позволяет использовать пользовательские цветовые коды в тексте.

https://gist.github.com/nathan-fiscaletti/9dc252d30b51df7d710a

Пример использования:

Формат цветного кода С цветом фона ->: передний план, фон:

Формат цветового кода БЕЗ цвета фона ->: передний план, N:

Сброс Цветовой формат -> [RC]

 String ansiColoredString = ColorCodes.parseColors("Hello, This :blue,n:is[RC] a :red,white:response[RC]."); 

или

 String ansiColoredString = ColorCodes.RED + "Hello" + ColorCodes.WHITE + ", This is a " + ColorCodes.BLUE + "test"; 

Если кто-то ищет быстрое решение, не стесняйтесь использовать следующий вспомогательный class 🙂

 public class Log { 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"; //info public static void i(String className, String message) { System.out.println(ANSI_GREEN + className + " : " + message + ANSI_RESET); } //error public static void e(String className, String message) { System.out.println(ANSI_RED + className + " : " + message + ANSI_RESET); } //debug public static void d(String className, String message) { System.out.println(ANSI_BLUE + className + " : " + message + ANSI_RESET); } //warning public static void w(String className, String message) { System.out.println(ANSI_YELLOW + className + " : " + message + ANSI_RESET); } } 

ПРИМЕНЕНИЕ:

 Log.i(TAG,"This is an info message"); Log.e(TAG,"This is an error message"); Log.w(TAG,"This is a warning message"); Log.d(TAG,"This is a debug message"); 

Спасибо @ whiteFang34 за коды ANSI.

 public enum Color { //颜色结尾字符串,重置颜色的RESET("\033[0m"), // Regular Colors 普通颜色,不带加粗,背景色等BLACK("\033[0;30m"), // BLACK RED("\033[0;31m"), // RED GREEN("\033[0;32m"), // GREEN YELLOW("\033[0;33m"), // YELLOW BLUE("\033[0;34m"), // BLUE MAGENTA("\033[0;35m"), // MAGENTA CYAN("\033[0;36m"), // CYAN WHITE("\033[0;37m"), // WHITE // Bold BLACK_BOLD("\033[1;30m"), // BLACK RED_BOLD("\033[1;31m"), // RED GREEN_BOLD("\033[1;32m"), // GREEN YELLOW_BOLD("\033[1;33m"), // YELLOW BLUE_BOLD("\033[1;34m"), // BLUE MAGENTA_BOLD("\033[1;35m"), // MAGENTA CYAN_BOLD("\033[1;36m"), // CYAN WHITE_BOLD("\033[1;37m"), // WHITE // Underline BLACK_UNDERLINED("\033[4;30m"), // BLACK RED_UNDERLINED("\033[4;31m"), // RED GREEN_UNDERLINED("\033[4;32m"), // GREEN YELLOW_UNDERLINED("\033[4;33m"), // YELLOW BLUE_UNDERLINED("\033[4;34m"), // BLUE MAGENTA_UNDERLINED("\033[4;35m"), // MAGENTA CYAN_UNDERLINED("\033[4;36m"), // CYAN WHITE_UNDERLINED("\033[4;37m"), // WHITE // Background BLACK_BACKGROUND("\033[40m"), // BLACK RED_BACKGROUND("\033[41m"), // RED GREEN_BACKGROUND("\033[42m"), // GREEN YELLOW_BACKGROUND("\033[43m"), // YELLOW BLUE_BACKGROUND("\033[44m"), // BLUE MAGENTA_BACKGROUND("\033[45m"), // MAGENTA CYAN_BACKGROUND("\033[46m"), // CYAN WHITE_BACKGROUND("\033[47m"), // WHITE // High Intensity BLACK_BRIGHT("\033[0;90m"), // BLACK RED_BRIGHT("\033[0;91m"), // RED GREEN_BRIGHT("\033[0;92m"), // GREEN YELLOW_BRIGHT("\033[0;93m"), // YELLOW BLUE_BRIGHT("\033[0;94m"), // BLUE MAGENTA_BRIGHT("\033[0;95m"), // MAGENTA CYAN_BRIGHT("\033[0;96m"), // CYAN WHITE_BRIGHT("\033[0;97m"), // WHITE // Bold High Intensity BLACK_BOLD_BRIGHT("\033[1;90m"), // BLACK RED_BOLD_BRIGHT("\033[1;91m"), // RED GREEN_BOLD_BRIGHT("\033[1;92m"), // GREEN YELLOW_BOLD_BRIGHT("\033[1;93m"), // YELLOW BLUE_BOLD_BRIGHT("\033[1;94m"), // BLUE MAGENTA_BOLD_BRIGHT("\033[1;95m"), // MAGENTA CYAN_BOLD_BRIGHT("\033[1;96m"), // CYAN WHITE_BOLD_BRIGHT("\033[1;97m"), // WHITE // High Intensity backgrounds BLACK_BACKGROUND_BRIGHT("\033[0;100m"), // BLACK RED_BACKGROUND_BRIGHT("\033[0;101m"), // RED GREEN_BACKGROUND_BRIGHT("\033[0;102m"), // GREEN YELLOW_BACKGROUND_BRIGHT("\033[0;103m"), // YELLOW BLUE_BACKGROUND_BRIGHT("\033[0;104m"), // BLUE MAGENTA_BACKGROUND_BRIGHT("\033[0;105m"), // MAGENTA CYAN_BACKGROUND_BRIGHT("\033[0;106m"), // CYAN WHITE_BACKGROUND_BRIGHT("\033[0;107m"); // WHITE private final String code; Color(String code) { this.code = code; } @Override public String toString() { return code; } } System.out.print(Color.BLACK_BOLD); System.out.println("111111111aaaaaaaaaaaaaaaa=============="); System.out.print(Color.RESET); System.out.print(Color.BLUE_BACKGROUND); System.out.print(Color.YELLOW); //设置前景色 为YELLOW System.out.println("111111111aaaaaaaaaaaaaaaa==============马哥私房菜"); System.out.println("111111111aaaaaaaaaaaaaaaa==============马哥私房菜"); System.out.println("111111111aaaaaaaaaaaaaaaa==============马哥私房菜"); System.out.println("111111111aaaaaaaaaaaaaaaa==============马哥私房菜"); System.out.print(Color.RESET); 
  • Есть ли простой способ сравнить, насколько близки два цвета друг к другу
  • Преобразование строки в цвет в Java
  • Как получить цвет из шестнадцатеричной строки цвета
  • Как определить цвета в качестве переменных в CSS?
  • Получить цвет-int из цветового ресурса
  • Как преобразовать целое число цвета в шестнадцатеричную строку в Android?
  • Как преобразовать hex в rgb с помощью Java?
  • Алгоритм цветового затухания?
  • Алгоритм добавления смешанного цвета для значений RGB
  • Есть ли алгоритм для смешивания цветов, который работает как смешивание реальных цветов?
  • Преобразование значений RGB в название цвета
  • Interesting Posts

    Могу ли я безопасно игнорировать предупреждение тестирования логотипа Windows при установке VirtualBox в Windows XP?

    Не удалось найти стиль «координаторLayoutStyle» в текущей теме

    Файлы rsync более 1 недели

    Как я могу получить комментарий текущего ssh-ключа authorized_keys?

    Как использовать stringstream для разделения разделенных запятыми строк

    Почему константы массива могут использоваться только в инициализаторах?

    Как указать платформу для MSBuild?

    Почему разрешение дисплея не соответствует 16: 9 или 4: 3?

    Android: удалить левое поле из пользовательского макета панели действий

    Почему длина возвращает 1 для кортежа с 2 элементами и дает ошибку для кортежа с большим количеством элементов?

    Пользовательские атрибуты в styles.xml

    Как получить идентификатор Insert в MSSQL в PHP?

    Как начать работу в другом приложении?

    Регулярное выражение для пароля должно содержать не менее восьми символов, как минимум одно число и буквы нижнего и верхнего регистра и специальные символы

    Проецирование 3D-точек на двумерную плоскость

    Давайте будем гением компьютера.