大家好,欢迎来到IT知识分享网。
写Java程序的时候,为了看到程序的状态,省事时会写很多的System.out。这本来是为了看程序运行状态,结果满屏幕的输出,看起来很费劲。同样的情况出现在tomcat的日志上,System.out和log会同时写在catalina.out中,tail起来也费劲。
如果一些打印是带颜色的,那醒目多了。于是写了一个简答的实现,让打印的字符带颜色。
效果如下(我设置控制台背景是黑色):
使用起来也很简单:
PRINT.PN("黑色", PRINT.BLACK);
PRINT.PN("白色", PRINT.WHITE);
PRINT.PN("红色", PRINT.RED);
PRINT.PN("绿色", PRINT.GREEN);
PRINT.PN("黄色", PRINT.YELLOW);
PRINT.PN("蓝色", PRINT.BLUE);
PRINT.PN("品红", PRINT.MAGENTA);
PRINT.PN("蓝绿", PRINT.CYAN);
PRINT.PN("黑底白字", PRINT.WHITE, PRINT.BLACK_BACKGROUND);
PRINT.PN("白底黑字", PRINT.BLACK, PRINT.WHITE_BACKGROUND);
PRINT.PN("蓝底红字", PRINT.RED, PRINT.BLUE_BACKGROUND);
PRINT.PN("加粗倾斜", PRINT.BOLD, PRINT.ITATIC);
PRINT.PN("黄底白字下划线", PRINT.WHITE, PRINT.YELLOW_BACKGROUND, PRINT.UNDERLINE);
PRINT.PN("红字颜色反转", PRINT.RED, PRINT.REVERSE);
这个的原理见维基百科:ANSI转义字符
代码很短,可以去我的码云下载:控制台打印带颜色的字符,也可以直接复制下面源码:
public class PRINT {
public static void main(String[] args) {
PRINT.PN("黑色", PRINT.BLACK);
PRINT.PN("白色", PRINT.WHITE);
PRINT.PN("红色", PRINT.RED);
PRINT.PN("绿色", PRINT.GREEN);
PRINT.PN("黄色", PRINT.YELLOW);
PRINT.PN("蓝色", PRINT.BLUE);
PRINT.PN("品红", PRINT.MAGENTA);
PRINT.PN("蓝绿", PRINT.CYAN);
PRINT.PN("黑底白字", PRINT.WHITE, PRINT.BLACK_BACKGROUND);
PRINT.PN("白底黑字", PRINT.BLACK, PRINT.WHITE_BACKGROUND);
PRINT.PN("蓝底红字", PRINT.RED, PRINT.BLUE_BACKGROUND);
PRINT.PN("加粗倾斜", PRINT.BOLD, PRINT.ITATIC);
PRINT.PN("黄底白字下划线", PRINT.WHITE, PRINT.YELLOW_BACKGROUND, PRINT.UNDERLINE);
PRINT.PN("红字颜色反转", PRINT.RED, PRINT.REVERSE);
}
public static final int WHITE = 30; // 白色
public static final int WHITE_BACKGROUND = 40; // 白色背景
public static final int RED = 31; // 红色
public static final int RED_BACKGROUND = 41; // 红色背景
public static final int GREEN = 32; // 绿色
public static final int GREEN_BACKGROUND = 42; // 绿色背景
public static final int YELLOW = 33; // 黄色
public static final int YELLOW_BACKGROUND = 43; // 黄色背景
public static final int BLUE = 34; // 蓝色
public static final int BLUE_BACKGROUND = 44; // 蓝色背景
public static final int MAGENTA = 35; // 品红(洋红)
public static final int MAGENTA_BACKGROUND = 45;// 品红背景
public static final int CYAN = 36; // 蓝绿
public static final int CYAN_BACKGROUND = 46; // 蓝绿背景
public static final int BLACK = 37; // 黑色
public static final int BLACK_BACKGROUND = 47; // 黑色背景
public static final int BOLD = 1; // 粗体
public static final int ITATIC = 3; // 斜体
public static final int UNDERLINE = 4; // 下划线
public static final int REVERSE = 7; // 反转
private static String FMT(String txt, int... codes) {
StringBuffer sb = new StringBuffer();
for (int code : codes) {
sb.append(code + ";");
}
String _code = sb.toString();
if (_code.endsWith(";")) {
_code = _code.substring(0, _code.length() - 1);
}
return (char) 27 + "[" + _code + "m" + txt + (char) 27 + "[0m";
}
/**
* 打印不换行
*/
public static void P(String txt, int... codes) {
System.out.print(FMT(txt, codes));
}
/**
* 打印并换行
*/
public static void PN(String txt, int... codes) {
System.out.println(FMT(txt, codes));
}
/**
* 默认打印红色文字
*/
public static void PN(String txt) {
System.out.println(FMT(txt, new int[]{RED}));
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25840.html