Como imprimir colors no console usando System.out.println?

Como posso imprimir colors no console? Eu quero mostrar dados em colors quando o processador envia dados e em colors diferentes quando recebe dados.

Se o seu terminal suportar, você pode usar códigos de escape ANSI para usar colors na sua saída. Geralmente funciona para prompts do shell Unix; no entanto, ele não funciona para o Prompt de Comando do Windows (embora funcione para o Cygwin). Por exemplo, você poderia definir constantes como estas para as colors:

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

Então, você poderia referenciá-los conforme necessário.

Por exemplo, usando as constantes acima, você poderia fazer a seguinte saída de texto em vermelho nos terminais suportados:

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

Atualização: Você pode querer verificar a biblioteca Jansi . Ele fornece uma API e tem suporte para o Windows usando o JNI. Eu não tentei ainda; no entanto, parece promissor.

Atualização 2: Além disso, se você quiser alterar a cor do plano de fundo do texto para uma cor diferente, tente o seguinte também:

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

Por exemplo:

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

Eu criei uma biblioteca chamada JCDP ( Java Colored Debug Printer ).

Para Linux, ele usa os códigos de escape ANSI mencionados por WhiteFang, mas os abstrai usando palavras em vez de códigos que são muito mais intuitivos. Torna-se tão fácil quanto:

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

Para o Windows, ele inclui a biblioteca JAnsi, mas cria uma camada de abstração sobre ela, mantendo a interface intuitiva e simples criada para o Linux.

Esta biblioteca está licenciada sob a licença do MIT, portanto, sinta-se à vontade para usá-la.

Dê uma olhada no repository github do JCDP .

Aqui está uma lista de colors em uma class Java com campos public static

Uso

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

Nota Não se esqueça de usar o RESET após a impressão, pois o efeito permanecerá se não estiver limpo

 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 } 

Uma maneira razoavelmente portátil de fazer isso é com as sequências de escape brutas. Veja http://en.wikipedia.org/wiki/ANSI_escape_code

[editada para user9999999 em 2017-02-20]

Java não “manipula os códigos”, isso é verdade, mas Java gera o que você disse para a saída. não é culpa do Java que o console do Windows trate o ESC (chr (27)) como apenas outro glifo (←).

você me fez iniciar no Windows. você me deve, mano

Você poderia fazer isso usando seqüências de escape ANSI. Eu realmente juntei esta class em Java para qualquer um que gostaria de uma solução simples para isso. Permite o uso de códigos de colors personalizados no texto.

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

Exemplo de uso:

Formato de código de cor com cor de fundo ->: primeiro plano, plano de fundo:

Formato de código de colors sem cor de fundo ->: primeiro plano, N:

Redefinir formato de cor -> [RC]

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

ou

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

Se alguém estiver procurando por uma solução rápida, sinta-se à vontade para usar a seguinte class auxiliar 🙂

 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); } } 

USO:

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

Obrigado @ whiteFang34 pelos códigos 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);