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的环境,推荐以下库:
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) ); } }
关键注意事项
-
环境兼容性:
- ANSI方法在IntelliJ/Eclipse等IDE控制台中有效
- Windows旧版CMD需使用Jansi等库激活支持
- 执行前通过
System.console() != null
检测控制台可用性
-
颜色重置:
务必在彩色文本后添加RESET
代码,否则后续输出会继承颜色 -
适用场景:
- 调试日志分级(错误红色、警告黄色)
- 命令行工具美化输出
- 测试结果高亮显示(成功绿色/失败红色)
-
替代方案:
图形界面开发应使用JTextPane
或StyledDocument
,而非控制台
总结建议
- 新系统/现代终端:优先使用ANSI转义序列(无需额外依赖)
- 旧版Windows/跨平台项目:选择Jansi或JColor库
- 生产环境:建议封装颜色工具类,通过
isANSISupported()
动态切换实现
引用说明:
ANSI标准参考:ECMA-48标准文档
Jansi库:官方GitHub
JColor库:Maven仓库
颜色代码表来源:ANSI Escape Code维基百科
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/31171.html