如何使用Java实现终端彩色字符串打印 求相关第三方库推荐
Java终端打印彩色字符串实现方案(第三方库版)
主流可用第三方库介绍
1. Jansi(轻量跨平台首选)
Jansi是目前Java生态中使用最广泛的终端彩色输出工具库,底层已经封装了所有平台的终端兼容逻辑,Windows系统的cmd、PowerShell,以及Linux、macOS的各类终端都可以正常显示,不需要手动处理ANSI转义序列的适配问题。
使用示例:
首先引入Maven依赖:
<dependency> <groupId>org.fusesource.jansi</groupId> <artifactId>jansi</artifactId> <version>2.4.1</version> </dependency>
代码调用示例:
import org.fusesource.jansi.Ansi; import org.fusesource.jansi.AnsiConsole; public class ColorPrintDemo { public static void main(String[] args) { // 初始化Jansi,完成当前环境的终端适配 AnsiConsole.systemInstall(); // 打印红色文字 System.out.println(Ansi.ansi().fgRed().a("这是红色输出内容").reset()); // 打印黄色背景、蓝色文字、加粗样式的内容 System.out.println(Ansi.ansi().fgBlue().bgYellow().bold().a("蓝字黄底加粗内容").reset()); // 打印绿色下划线文字 System.out.println(Ansi.ansi().fgGreen().aUnderline("绿色下划线内容").reset()); // 程序退出前卸载适配,恢复终端默认状态 AnsiConsole.systemUninstall(); } }
2. Lanterna(适合需要复杂终端交互的场景)
如果除了彩色打印之外,你后续还需要开发交互式终端程序(比如菜单选择、实时刷新输出等),可以选择Lanterna,它除了基础的彩色输出能力外,还封装了大量终端UI组件,完全不需要手动处理终端控制逻辑。
基础彩色打印示例:
import com.googlecode.lanterna.SGR; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.Terminal; public class LanternaColorDemo { public static void main(String[] args) throws Exception { Terminal terminal = new DefaultTerminalFactory().createTerminal(); terminal.setForegroundColor(TextColor.ANSI.MAGENTA); terminal.enableSGR(SGR.ITALIC); terminal.putString("洋红色斜体内容"); terminal.resetColorAndSGR(); terminal.flush(); terminal.close(); } }
额外说明
- 上述两个库都自带降级逻辑,如果运行环境的终端不支持彩色输出,会自动转为普通文本输出,不会出现乱码的转义字符。
- 单纯只有彩色打印需求优先选择Jansi,引入和调用都更简单,体积更小,没有额外功能负担。
内容的提问来源于stack exchange,提问作者Maxim Fedorov
相关产品推荐
相关产品推荐

