How to print color in console using System.out.println? How to print color in console using System.out.println? java java

How to print color in console using System.out.println?


If your terminal supports it, you can use ANSI escape codes to use color in your output. It generally works for Unix shell prompts; however, it doesn't work for Windows Command Prompt (Although, it does work for Cygwin). For example, you could define constants like these for the 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";

Then, you could reference those as necessary.

For example, using the above constants, you could make the following red text output on supported terminals:

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

Update: You might want to check out the Jansi library. It provides an API and has support for Windows using JNI. I haven't tried it yet; however, it looks promising.

Update 2: Also, if you wish to change the background color of the text to a different color, you could try the following as well:

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

For instance:

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


Here are a list of colors in a Java class with public static fields

Usage

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


Note Don't forget to use the RESET after printing as the effect will remain if it's not cleared


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}


I created a library called JColor that works on Linux, macOS, and Windows 10.

It uses the ANSI codes mentioned by WhiteFang, but abstracts them using words instead of codes which is more intuitive. Recently I added support for 8 and 24 bit colors 🌈

Choose your format, colorize it, and print it:

System.out.println(colorize("Green text on blue", GREEN_TEXT(), BLUE_BACK()));

You can also define a format once, and reuse it several times:

AnsiFormat fWarning = new AnsiFormat(RED_TEXT(), YELLOW_BACK(), BOLD());System.out.println(colorize("Something bad happened!", fWarning));

Head over to JColor github repository for some examples.