System.out.println を使用してコンソールに色を印刷するにはどうすればよいでしょうか? 質問する

System.out.println を使用してコンソールに色を印刷するにはどうすればよいでしょうか? 質問する

コンソールでカラーを印刷するにはどうすればいいですか? プロセッサがデータを送信するときにデータをカラーで表示し、データを受信するときに別の色で表示したいです。

ベストアンサー1

端末がサポートしている場合は、ANSIエスケープコード出力に色を使用するには、次のようにします。これは通常、Unix シェル プロンプトでは機能しますが、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);

更新:ぜひチェックしてみてくださいジャンシライブラリ。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);

おすすめ記事