470 votes

Comment imprimer une couleur dans la console en utilisant System.out.println?

Comment puis-je imprimer de la couleur dans la console? Je veux afficher des données en couleurs lorsque le processeur envoie des données et dans des couleurs différentes lorsqu'il reçoit des données.

2 votes

Si la console prend en charge (par exemple, la console Java Eclipse) la personnalisation de la couleur de stdout/stderr, vous pouvez utiliser System.out.println pour une couleur et System.err.println pour une autre couleur.

1voto

Louis CAD Points 4976

Si vous utilisez Kotlin (qui fonctionne parfaitement avec Java), vous pouvez créer une telle énumération :

enum class AnsiColor(private val colorNumber: Byte) {
    BLACK(0), RED(1), GREEN(2), YELLOW(3), BLUE(4), MAGENTA(5), CYAN(6), WHITE(7);

    companion object {
        private const val prefix = "\u001B"
        const val RESET = "$prefix[0m"
        private val isCompatible = "win" !in System.getProperty("os.name").toLowerCase()
    }

    val regular get() = if (isCompatible) "$prefix[0;3${colorNumber}m" else ""
    val bold get() = if (isCompatible) "$prefix[1;3${colorNumber}m" else ""
    val underline get() = if (isCompatible) "$prefix[4;3${colorNumber}m" else ""
    val background get() = if (isCompatible) "$prefix[4${colorNumber}m" else ""
    val highIntensity get() = if (isCompatible) "$prefix[0;9${colorNumber}m" else ""
    val boldHighIntensity get() = if (isCompatible) "$prefix[1;9${colorNumber}m" else ""
    val backgroundHighIntensity get() = if (isCompatible) "$prefix[0;10${colorNumber}m" else ""
}

Et ensuite l'utiliser comme ceci : (le code ci-dessous présente les différents styles pour toutes les couleurs)

val sampleText = "Ceci est un exemple de texte"
enumValues().forEach { ansiColor ->
    println("${ansiColor.regular}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.bold}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.underline}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.background}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.highIntensity}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.boldHighIntensity}$sampleText${AnsiColor.RESET}")
    println("${ansiColor.backgroundHighIntensity}$sampleText${AnsiColor.RESET}")
}

Si vous exécutez sur Windows où ces codes ANSI ne sont pas pris en charge, la vérification isCompatible évite les problèmes en remplaçant les codes par une chaîne vide.

1voto

Satish M Points 21

Pour barrer :

public static final String ANSI_STRIKEOUT_BLACK = "\u001B[30;9m";
public static final String ANSI_STRIKEOUT_RED = "\u001B[31;9m";
public static final String ANSI_STRIKEOUT_GREEN = "\u001B[32;9m";
public static final String ANSI_STRIKEOUT_YELLOW = "\u001B[33;9m";
public static final String ANSI_STRIKEOUT_BLUE = "\u001B[34;9m";
public static final String ANSI_STRIKEOUT_PURPLE = "\u001B[35;9m";
public static final String ANSI_STRIKEOUT_CYAN = "\u001B[36;9m";
public static final String ANSI_STRIKEOUT_WHITE = "\u001B[37;9m";

-5voto

iSahil Points 57

La meilleure solution pour imprimer n'importe quel texte en rouge en Java est :

System.err.print("Bonjour le monde");

3 votes

Le "downvote" n'est pas le mien - mais, il y a d'autres réponses qui répondent à la question de l'OP, et elles ont été publiées il y a quelque temps. Lorsque vous postez une réponse voir : Comment rédiger une bonne réponse?, assurez-vous d'ajouter soit une nouvelle solution, soit une explication sensiblement meilleure, surtout lors de la réponse à des questions plus anciennes.

10 votes

@iSahil ceci a probablement été downvoté parce que simplement écrire dans la sortie d'erreur standard ne colore pas explicitement quoique ce soit. Beaucoup d'IDE et de consoles interpréteront les messages d'erreur et les afficheront en rouge ou similaire, mais ce n'est pas quelque chose sur lequel vous pouvez compter.

1 votes

Bien que ce ne soit pas la réponse directe à la question posée ci-dessus, c'était la réponse que je cherchais lorsque je cherchais "java imprimer en rouge dans la console". Ainsi, je pense que cela a sa place sur cette page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X