16

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

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

9 回答 9

22

安慰

有关完整的序列集合(包括颜色),请参阅有关 ANSI 转义的 Wikipedia 页面。

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

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

3 表示改变颜色,第一个 1 表示红色(绿色将是 2),第二个 1 表示在“明亮”模式下进行。

图形用户界面

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

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

有关此类事情的更多详细信息,请参阅Swing 教程。也可以通过在 JTextPane 中使用样式。这是一个有用的代码示例,可以使用 JTextPane 轻松完成此操作(从有用的评论中添加)。

JTextArea 是一个单一颜色的文本组件,如此处所述。它只能以一种颜色显示。您可以像这样设置整个 JTextArea 的颜色:

JTextArea area = new JTextArea("hello world");
area.setForeground(Color.red)
于 2009-02-19T14:04:50.873 回答
12

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

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

\033[31m 将颜色切换为红色,\033[0m 将其切换回正常。

于 2013-02-17T20:39:02.310 回答
4

谷歌显然有一个这类东西的库: http ://code.google.com/p/jlibs/wiki/AnsiColoring

还有一篇 Javaworld 文章可以解决您的问题: http ://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html

于 2009-02-19T13:52:50.030 回答
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 环境变量的内容来决定使用哪些代码。

于 2009-02-19T13:27:38.060 回答
1

我创建了一个名为JCDP的 API ,以前的 JPrinter 代表Java Colored Debug Printer。对于 Linux,它使用 WhiteFang 提到的 ANSI 转义码,但使用单词而不是更直观的代码来抽象它们。对于 Windows,它实际上包含 JAnsi 库,但在其上创建了一个抽象层,保持为 Linux 创建的直观和简单的界面。

这个库是在MIT 许可下获得许可的,所以请随意使用它。

查看JCDP 的 github 存储库

于 2012-04-01T10:07:29.157 回答
1

设置颜色()。假设您在 AWT 上下文中使用 Graphics g。

请参阅文档以获取更多信息。

于 2009-02-19T13:15:07.700 回答
1

下载 jansi-1.4.jar 并设置类路径并尝试此代码 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();
  }
}
于 2014-03-13T12:37:01.387 回答
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 );
    }
}
}
于 2009-02-19T13:21:56.187 回答
0

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

于 2009-02-19T13:17:59.350 回答