Java在控制臺輸出帶顏色字符的2種方式詳解

通過\033特殊轉義符實現

這種方法主要適用於Linux系統的控制臺,也能在Windows系統中的IDEA中實現,但在Windows系統的控制臺中卻是亂碼。

public class ColourTest {
    /**
     * @param colour  顏色代號:背景顏色代號(41-46);前景色代號(31-36)
     * @param type    樣式代號:0無;1加粗;3斜體;4下劃線
     * @param content 要打印的內容
     */
    private static String getFormatLogString(String content, int colour, int type) {
        boolean hasType = type != 1 && type != 3 && type != 4;
        if (hasType) {
            return String.format("\033[%dm%s\033[0m", colour, content);
        } else {
            return String.format("\033[%d;%dm%s\033[0m", colour, type, content);
        }
    }

    public static void main(String[] args) {
        System.out.println("控制臺顏色測試:");
        System.out.println(getFormatLogString("[ 紅色 ]", 31, 0));
        System.out.println(getFormatLogString("[ 黃色 ]", 32, 0));
        System.out.println(getFormatLogString("[ 橙色 ]", 33, 0));
        System.out.println(getFormatLogString("[ 藍色 ]", 34, 0));
        System.out.println(getFormatLogString("[ 紫色 ]", 35, 0));
        System.out.println(getFormatLogString("[ 綠色 ]", 36, 0));
    }
}

Linux中的測試效果

編譯後,在Linux系統上完美運行。

IDEA 中的測試效果

如下圖所示,在Windows系統上的 IDEA 中也能實現顏色效果,但請註意 產生顏色的 數字參數 與Linux中的有差異。Linux中同樣的代碼,在IDEA中運行後的實際顏色是和Linux中有部分不同,比如下圖中的綠色。

Windows控制臺測試結果

如下圖所示,輸出亂碼,無顏色效果。

通過org.fusesource.jansi實現

這種方法能在Windows控制臺和Linux中完美運行,且結果一致,但是在IDEA中沒有任何顏色效果。

    <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>2.1.1</version>
    </dependency>

Windows控制臺測試結果

Linux中的測試效果

IDEA 中的測試效果

總結 

到此這篇關於Java在控制臺輸出帶顏色字符的2種方式的文章就介紹到這瞭,更多相關Java控制臺輸出帶顏色字符內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: