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

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

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

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

使用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的环境,推荐以下库:

Jansi库(轻量级解决方案)

Maven依赖

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

<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代码,否则后续输出会继承颜色

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

  3. 适用场景

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


总结建议

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

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

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/31171.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月19日 17:53
下一篇 2025年6月16日 04:04

相关推荐

  • 如何快速复制Java包?

    要复制Java包,直接复制其对应文件夹即可,包本质是目录结构,使用文件管理器或命令行复制整个文件夹(含子包),若需编译后文件,同时复制src与bin目录下的对应包路径,确保包名与目录层级一致。

    2025年6月10日
    200
  • Java如何轻松实现多机聊天?

    使用Java实现多台电脑聊天需采用C/S架构:建立中央服务器处理消息转发,各客户端通过Socket连接服务器,服务器监听端口接收消息,利用多线程管理多个客户端连接,将收到的消息广播给所有在线客户端,实现实时群聊功能。

    2025年6月18日
    100
  • Java删除操作如何避免错误?

    Java中delete用于删除文件或数据库记录,文件删除用File类的delete()方法;数据库删除需通过JDBC执行SQL的DELETE语句,配合条件避免误删数据,操作前务必确认目标存在且权限足够。

    2025年6月14日
    100
  • Java接口测试调用实战指南

    通过JUnit或TestNG框架编写测试用例,构造请求参数并发送接口调用,最后使用断言验证响应状态码、数据正确性及异常处理。

    2025年6月8日
    100
  • Java怎么安全退出线程?

    Java中退出线程推荐使用标志位控制循环结束或调用interrupt()方法中断线程,避免使用已废弃的stop()方法,因其可能导致资源未释放,线程执行完run()方法后会自动终止,安全退出应确保资源正确清理。

    2025年6月8日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN