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