poner - set color java
Cómo establecer el color de una cuerda (9)
¿Alguien sabe cómo voy a establecer el color de una cadena que se imprimirá utilizando System.out
?
Este es el código que tengo actualmente:
System.out.println("TEXT THAT NEEDS TO BE A DIFFERENT COLOR.");
Consola
Consulte la página de Wikipedia sobre ANSI escapes para ver la colección completa de secuencias, incluidos los colores.
Pero para un simple ejemplo (Impresión en rojo) en Java (como etiquetó esto como Java) hacer:
System.out.println("/u001B31;1mhello world!");
El 3 indica cambio de color, el primero 1 indica el rojo (el verde sería 2) y el segundo 1 indica que debe hacerlo en modo "brillante".
GUI
Sin embargo, si desea imprimir en una GUI, la manera más fácil es usar html:
JEditorPane pane = new new JEditorPane();
pane.setText("<html><font color=/"red/">hello world!</font></html>");
Para obtener más detalles sobre este tipo de cosas, consulte el Tutorial de Swing . También es posible mediante el uso de estilos en un JTextPane. Aquí hay un ejemplo útil de código para hacer esto fácilmente con un JTextPane (agregado de un comentario útil).
JTextArea es un componente de texto de color único, como se describe aquí . Solo puede mostrarse en un color. Puede establecer el color para toda la JTextArea de esta manera:
JTextArea area = new JTextArea("hello world");
area.setForeground(Color.red)
Aparentemente, Google tiene una biblioteca para este tipo de cosas: http://code.google.com/p/jlibs/wiki/AnsiColoring
También hay un artículo de Javaworld sobre esto que resuelve tu problema: http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html
Las cadenas no encapsulan información de color. ¿Estás pensando en configurar el color en una consola o en la GUI?
Si está imprimiendo en stdout, depende del terminal en el que está imprimiendo. Puede usar códigos de escape ansi en xterms y otros emuladores de terminal similares. Aquí hay un fragmento de código bash que imprimirá los 255 colores admitidos por xterm, putty y Konsole:
for ((i=0;i<256;i++)); do echo -en "/e[38;5;"$i"m"$i" "; done
Puede usar estos códigos de escape en cualquier lenguaje de programación. Es mejor confiar en una biblioteca que decidirá qué códigos usar según la arquitectura y el contenido de la variable de entorno TERM.
setColor () Suponiendo que usa Graphics g en un contexto AWT.
Por favor, consulte la documentación para obtener información adicional.
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 );
}
}
}
para linux (bash) el siguiente código funciona para mí:
System.out.print("/033[31mERROR /033[0m");
el / 033 [31m cambiará el color a rojo y / 033 [0m lo cambiará a la normalidad.
Descarga jansi-1.4.jar y establece classpath y prueba este código funcionando al 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();
}
}
Creé una API llamada JCDP , anterior JPrinter, que significa Java Colored Debug Printer . Para Linux usa los códigos de escape ANSI que WhiteFang mencionó, pero los abstrae usando palabras en lugar de códigos, lo cual es mucho más intuitivo. Para Windows, realmente incluye la biblioteca JAnsi pero crea una capa de abstracción sobre ella, manteniendo la interfaz intuitiva y simple creada para Linux.
Esta biblioteca está autorizada bajo la Licencia MIT, así que siéntete libre de usarla.
Eche un vistazo al repositorio github de JCDP .