如何设置字符串的颜色

时间:2009-02-19 13:13:20

标签: java colors system.out

有谁知道如何设置将使用System.out打印的字符串的颜色?
这是我目前的代码:

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

9 个答案:

答案 0 :(得分:21)

控制台

请参阅Wikipedia page on ANSI escapes以获取完整的序列集合,包括颜色。

但是对于Java中的一个简单示例(用红色打印)(将其标记为Java),请执行以下操作:

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

3表示变色,第1个表示红色(绿色表示2),第2个表示在“明亮”模式下表示。

GUI

但是,如果要打印到GUI,最简单的方法是使用html:

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

有关此类事项的详细信息,请参阅the Swing Tutorial。通过在JTextPane中使用样式也可以。 Here is a helpful example代码可以使用JTextPane轻松完成此操作(从有用的评论中添加)。

JTextArea是single coloured Text component, as described here。它只能以一种颜色显示。您可以像这样设置整个JTextArea的颜色:

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

答案 1 :(得分:10)

for linux(bash)以下代码适用于我:

System.out.print("\033[31mERROR  \033[0m");
<0> \ 033 [31m将颜色切换为红色,\ 033 [0m将其切换回正常。

答案 2 :(得分:4)

Google显然有这样一个库: http://code.google.com/p/jlibs/wiki/AnsiColoring

还有一篇关于此的Javaworld文章解决了你的问题: http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html

答案 3 :(得分:1)

的setColor()。假设您在AWT上下文中使用Graphics g。

有关其他信息,请参阅the documentation

答案 4 :(得分:1)

如果要打印到标准输出,则取决于您要打印的终端。您可以在xterms和其他类似的终端模拟器上使用ansi转义码。 这是一个bash代码片段,它将打印xterm,putty和Konsole支持的所有255种颜色:

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

您可以在任何编程语言中使用这些转义码。最好依赖于一个库来决定使用哪些代码,具体取决于体系结构和TERM环境变量的内容。

答案 5 :(得分:1)

我创建了一个名为JCDP的API,前JPrinter,代表 Java彩色调试打印机。对于Linux,它使用WhiteFang提到的ANSI转义码,但是使用单词而不是代码对它们进行抽象,这更加直观。对于Windows,它实际上包含JAnsi库,但在其上创建了一个抽象层,维护了为Linux创建的直观和简单的界面。

此库已获得MIT License许可,因此请随时使用。

查看JCDP's github repository

答案 6 :(得分:1)

下载jansi-1.4.jar并设置classpath并尝试此代码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();
  }
}

答案 7 :(得分:0)

字符串不会封装颜色信息。您是否考虑在控制台或GUI中设置颜色?

答案 8 :(得分:0)

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 );
    }
}
}