当前位置:首页 > 后端开发 > 正文

Java打印字体颜色怎么设置?

在Java中,控制台打印字体颜色可通过ANSI转义码实现,使用形如 u001B[31m文本u001B[0m的格式,31 代表红色,0`重置样式,需确保终端支持ANSI(如IDEA终端或Unix系统),Windows旧版cmd可能不兼容。

在Java中为控制台输出设置字体颜色,主要依赖ANSI转义序列或第三方库实现,以下是详细方法及注意事项:

使用ANSI转义序列(原生支持)

适用于Linux/macOS终端及Windows 10+的终端(如PowerShell、CMD新版),ANSI代码通过特殊字符控制颜色格式:

public class ColorConsole {
    // ANSI颜色代码定义
    public static final String RESET = "u001B[0m";
    public static final String RED = "u001B[31m";
    public static final String GREEN = "u001B[32m";
    public static final String YELLOW = "u001B[33m";
    public static final String BLUE = "u001B[34m";
    public static void main(String[] args) {
        System.out.println(RED + "这是红色文本" + RESET);
        System.out.println(GREEN + "这是绿色文本" + RESET);
        System.out.println(BLUE + "这是蓝色文本" + RESET);
        System.out.println(YELLOW + "警告信息" + RESET);
    }
}

效果说明

  • u001B[ 是ANSI转义序列起始符
  • 31m~34m 代表不同前景色
  • 0m 用于重置颜色避免后续文本染色

完整颜色表
| 颜色 | 前景色代码 | 背景色代码 |
|———-|————|————|
| 黑色 | 30 | 40 |
| 红色 | 31 | 41 |
| 绿色 | 32 | 42 |
| 黄色 | 33 | 43 |
| 蓝色 | 34 | 44 |
| 品红 | 35 | 45 |
| 青色 | 36 | 46 |
| 白色 | 37 | 47 |
| 重置 | 0 | – |


使用第三方库(兼容旧版Windows)

对于Windows旧版本(如Win7)或不支持ANSI的环境,推荐以下库:

Java打印字体颜色怎么设置?  第1张

Jansi库(轻量级解决方案)

Maven依赖

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

示例代码

import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;
public class JansiExample {
    public static void main(String[] args) {
        AnsiConsole.systemInstall(); // 初始化Jansi
        System.out.println(
            Ansi.ansi()
                .fgRed().a("红色文本")
                .fgBlue().bgYellow().a(" 蓝字黄底 ")
                .reset()
        );
        AnsiConsole.systemUninstall(); // 清理资源
    }
}

JColor库(简化语法)

Maven依赖

<dependency>
    <groupId>com.diogonunes</groupId>
    <artifactId>JColor</artifactId>
    <version>5.5.1</version>
</dependency>

示例代码

import com.diogonunes.jcolor.Attribute;
public class JColorExample {
    public static void main(String[] args) {
        Attribute redText = Attribute.RED_TEXT();
        Attribute bgGreen = Attribute.BACK_COLOR(40, 180, 99); // RGB背景色
        System.out.println(
            Attribute.colorize("红色文字+绿色背景", redText, bgGreen)
        );
    }
}

关键注意事项

  1. 环境兼容性

    • ANSI方法在IntelliJ/Eclipse等IDE控制台中有效
    • Windows旧版CMD需使用Jansi等库激活支持
    • 执行前通过System.console() != null检测控制台可用性
  2. 颜色重置
    务必在彩色文本后添加RESET代码,否则后续输出会继承颜色

  3. 适用场景

    • 调试日志分级(错误红色、警告黄色)
    • 命令行工具美化输出
    • 测试结果高亮显示(成功绿色/失败红色)
  4. 替代方案
    图形界面开发应使用JTextPaneStyledDocument,而非控制台


总结建议

  • 新系统/现代终端:优先使用ANSI转义序列(无需额外依赖)
  • 旧版Windows/跨平台项目:选择Jansi或JColor库
  • 生产环境:建议封装颜色工具类,通过isANSISupported()动态切换实现

引用说明
ANSI标准参考:ECMA-48标准文档
Jansi库:官方GitHub
JColor库:Maven仓库
颜色代码表来源:ANSI Escape Code维基百科

0