sout imprimir consola como colores color java text colors

java - como - ¿Cómo imprimir en color en la consola usando System.out.println?



println java color (7)

¿Cómo puedo imprimir color en consola? Quiero mostrar datos en colores cuando el procesador envía datos y en diferentes colores cuando recibe datos.


Aquí hay una lista de colores en una clase de Java con campos public static .

Uso

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


Nota No olvide utilizar RESET después de imprimir, ya que el efecto se mantendrá si no se borra.


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 }


Puedes hacer esto usando secuencias de escape ANSI. De hecho, he reunido esta clase en Java para cualquier persona que quiera una solución simple para esto. Permite el uso de códigos de color personalizados en el texto.

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

Ejemplo de uso:

Formato de código de color CON color de fondo ->: primer plano, fondo:

Formato de código de color SIN color de fondo ->: primer plano, N:

Restablecer formato de color -> [RC]

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

o

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


Si alguien está buscando una solución rápida, no dude en utilizar la siguiente clase de ayuda :)

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

Gracias @ whiteFang34 por los códigos ANSI.


Una forma bastante portátil de hacerlo es con las secuencias de escape en bruto. Ver http://en.wikipedia.org/wiki/ANSI_escape_code

[editado para user9999999 el 2017-02-20]

Java no "maneja los códigos", eso es cierto, pero Java genera lo que le dijiste que hiciera. No es culpa de Java que la consola de Windows trate a ESC (chr (27)) como otro glifo (←).


JCDP una biblioteca llamada JCDP ( Java Colored Debug Printer ).

Para Linux usa los códigos de escape ANSI que mencionó WhiteFang, pero los abstrae usando palabras en lugar de códigos, lo cual es mucho más intuitivo. Se vuelve tan fácil como:

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

Para Windows, en realidad incluye la biblioteca JAnsi, pero crea una capa de abstracción sobre ella, manteniendo la interfaz intuitiva y simple creada para Linux.

Esta biblioteca está licenciada bajo la Licencia MIT, así que no dude en utilizarla.

Echa un vistazo al repositorio github de JCDP .


Si su terminal lo admite, puede usar códigos de escape ANSI para usar el color en su salida. Por lo general, funciona para las instrucciones de shell de Unix; sin embargo, no funciona para el símbolo del sistema de Windows (aunque sí funciona para Cygwin). Por ejemplo, podrías definir constantes como estas para los colores:

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

A continuación, podría hacer referencia a los que sean necesarios.

Por ejemplo, utilizando las constantes anteriores, puede hacer la siguiente salida de texto rojo en los terminales compatibles:

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

Actualización: es posible que desee revisar la biblioteca Jansi . Proporciona una API y tiene soporte para Windows usando JNI. No lo he probado todavía; Sin embargo, parece prometedor.

Actualización 2: Además, si desea cambiar el color de fondo del texto a otro color, también puede intentar lo siguiente:

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 ejemplo:

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


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