web-dev-qa-db-fra.com

Comment définir la couleur d'une chaîne

Est-ce que quelqu'un sait comment je définirais la couleur d'une chaîne qui sera imprimée en utilisant System.out?
Voici le code que j'ai actuellement:

System.out.println("TEXT THAT NEEDS TO BE A DIFFERENT COLOR.");
16
guess who

Console

Voir page Wikipedia sur les échappements ANSI pour la collection complète des séquences, y compris les couleurs.

Mais pour un exemple simple (impression en rouge) dans Java (comme vous l'avez marqué comme Java), faites:

System.out.println("\u001B31;1mhello world!");

Le 3 indique le changement de couleur, le premier 1 indique le rouge (le vert serait 2) et le second 1 indique le faire en mode "lumineux".

GUI

Cependant, si vous souhaitez imprimer sur une interface graphique, la manière la plus simple consiste à utiliser du HTML:

JEditorPane pane = new new JEditorPane();
pane.setText("<html><font color=\"red\">hello world!</font></html>");

Pour plus de détails sur ce genre de choses, voir le Swing Tutorial . C'est également possible en utilisant des styles dans un JTextPane. Voici un exemple utile de code pour le faire facilement avec un JTextPane (ajouté à partir d'un commentaire utile).

JTextArea est un composant Texte de couleur unique, comme décrit ici . Il ne peut s'afficher que dans une seule couleur. Vous pouvez définir la couleur de l'ensemble de JTextArea comme ceci:

JTextArea area = new JTextArea("hello world");
area.setForeground(Color.red)
22
Nick Fortescue

pour linux (bash), le code suivant fonctionne pour moi:

System.out.print("\033[31mERROR  \033[0m");

le\033 [31m passera la couleur au rouge et\033 [0m la ramènera à la normale.

10
Christian

Google a apparemment une bibliothèque pour ce genre de chose: http://code.google.com/p/jlibs/wiki/AnsiColoring

Il y a aussi un article Javaworld à ce sujet qui résout votre problème: http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html

4
Rolf

setColor (). En supposant que vous utilisez Graphics g dans un contexte AWT.

Veuillez vous référer à la documentation pour plus d'informations.

1
TomHastjarjanto

J'ai créé une API appelée JCDP , ancien JPrinter, qui signifie Java Colored Debug Printer . Pour Linux, il utilise les codes d'échappement ANSI mentionnés par WhiteFang, mais les résume en utilisant des mots au lieu de codes, ce qui est beaucoup plus intuitif. Pour Windows, il inclut en fait la bibliothèque JAnsi mais crée une couche d'abstraction dessus, conservant l'interface intuitive et simple créée pour Linux.

Cette bibliothèque est sous licence Licence MIT alors n'hésitez pas à l'utiliser.

Jetez un oeil à référentiel github de JCDP .

1
dialex

Si vous imprimez sur stdout, cela dépend du terminal sur lequel vous imprimez. Vous pouvez utiliser les codes d'échappement ansi sur les xterms et autres émulateurs de terminaux similaires. Voici un extrait de code bash qui imprimera les 255 couleurs prises en charge par xterm, PuTTY et Konsole:

 for ((i=0;i<256;i++)); do echo -en "\e[38;5;"$i"m"$i" "; done

Vous pouvez utiliser ces codes d'échappement dans n'importe quel langage de programmation. Il est préférable de s'appuyer sur une bibliothèque qui décidera des codes à utiliser en fonction de l'architecture et du contenu de la variable d'environnement TERM.

1
heeen

Téléchargez jansi-1.4.jar et définissez le chemin de classe et essayez ce code à 100%:

import org.fusesource.jansi.AnsiConsole;
import static org.fusesource.jansi.Ansi.*;
import static org.fusesource.jansi.Ansi.Color.*;

public class SampleColour
{
  public static void main(String[] args)
  {
    AnsiConsole.systemInstall();

    System.out.println(ansi().fg(RED).a("Hello World").reset());
    System.out.println("My Name is Raman");

    AnsiConsole.systemUninstall();
  }
}
1
Raman

Les chaînes n'encapsulent pas les informations de couleur. Envisagez-vous de définir la couleur dans une console ou dans l'interface graphique?

0
Jim
public class colorString
{

public static void main( String[] args )
{
    new colorString();   

}

public colorString( )
{
    kFrame f = new kFrame();
    f.setSize( 400, 400 );
    f.setVisible( true );
}

private static class kFrame extends JFrame
{
    @Override
    public void Paint(Graphics g) 
    {
        super.Paint( g );
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor( new Color(255, 0, 0) );
        g2d.drawString("red red red red red", 100, 100 );
    }
}
}
0
jedierikb