如何使用 System.out.println 在控制台中打印颜色?

新手上路,请多包涵

如何在控制台中打印颜色?我想在处理器发送数据时以颜色显示数据,在接收数据时以不同颜色显示数据。

原文由 Taranath Datta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 932
1 个回答

如果您的终端支持,您可以使用 ANSI 转义码 在输出中使用颜色。它通常适用于 Unix shell 提示;但是,它不适用于 Windows 命令提示符(尽管它确实适用于 Cygwin)。例如,您可以为颜色定义如下常量:

 public static final String ANSI_RESET = "\u001B[0m";
public static final String ANSI_BLACK = "\u001B[30m";
public static final String ANSI_RED = "\u001B[31m";
public static final String ANSI_GREEN = "\u001B[32m";
public static final String ANSI_YELLOW = "\u001B[33m";
public static final String ANSI_BLUE = "\u001B[34m";
public static final String ANSI_PURPLE = "\u001B[35m";
public static final String ANSI_CYAN = "\u001B[36m";
public static final String ANSI_WHITE = "\u001B[37m";

然后,您可以根据需要参考这些内容。

例如,使用上述常量,您可以在支持的终端上输出以下红色文本:

 System.out.println(ANSI_RED + "This text is red!" + ANSI_RESET);

更新: 您可能想查看 Jansi 库。它提供了一个 API 并支持使用 JNI 的 Windows。我还没有尝试过;然而,它看起来很有希望。

更新 2: 此外,如果您想将文本的背景颜色更改为其他颜色,您也可以尝试以下操作:

 public static final String ANSI_BLACK_BACKGROUND = "\u001B[40m";
public static final String ANSI_RED_BACKGROUND = "\u001B[41m";
public static final String ANSI_GREEN_BACKGROUND = "\u001B[42m";
public static final String ANSI_YELLOW_BACKGROUND = "\u001B[43m";
public static final String ANSI_BLUE_BACKGROUND = "\u001B[44m";
public static final String ANSI_PURPLE_BACKGROUND = "\u001B[45m";
public static final String ANSI_CYAN_BACKGROUND = "\u001B[46m";
public static final String ANSI_WHITE_BACKGROUND = "\u001B[47m";

例如:

 System.out.println(ANSI_GREEN_BACKGROUND + "This text has a green background but default text!" + ANSI_RESET);
System.out.println(ANSI_RED + "This text has red text but a default background!" + ANSI_RESET);
System.out.println(ANSI_GREEN_BACKGROUND + ANSI_RED + "This text has a green background and red text!" + ANSI_RESET);

原文由 WhiteFang34 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题