System.out
を使用して印刷される文字列の色をどのように設定するかを誰もが知っていますか?
これは私が現在持っているコードです:
System.out.println("TEXT THAT NEEDS TO BE A DIFFERENT COLOR.");
色を含むシーケンスの完全なコレクションについては、 ANSIエスケープに関するウィキペディアのページ を参照してください。
しかし、Java(これをJavaとしてタグ付けしたように)の簡単な例(赤で印刷)の場合:
System.out.println("\u001B31;1mhello world!");
3は色の変化を示し、最初の1は赤(緑は2)を示し、2番目の1は「明るい」モードでそれを行うことを示します。
ただし、GUIに印刷する場合、最も簡単な方法はhtmlを使用することです。
JEditorPane pane = new new JEditorPane();
pane.setText("<html><font color=\"red\">hello world!</font></html>");
この種のことの詳細については、 Swing Tutorial を参照してください。 JTextPaneでスタイルを使用することでも可能です。 これは役立つ例です JTextPaneでこれを簡単に行うためのコード(役に立つコメントから追加)。
JTextAreaは ここで説明するように、単一色のテキストコンポーネント です。 1色でのみ表示できます。次のように、JTextArea全体の色を設定できます。
JTextArea area = new JTextArea("hello world");
area.setForeground(Color.red)
linux(bash)の場合、次のコードが動作します。
System.out.print("\033[31mERROR \033[0m");
\ 033 [31mは色を赤に、\ 033 [0mは色を通常に戻します。
Googleには、この種のライブラリがあります: http://code.google.com/p/jlibs/wiki/AnsiColoring
あなたの問題を解決するJavaworldの記事もあります: http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html
setColor()。 AWTコンテキストでGraphics gを使用すると仮定します。
追加情報については ドキュメント を参照してください。
[〜#〜] jcdp [〜#〜] というAPIを作成しました。以前のJPrinterはJava Colored Debug Printer。 Linuxの場合、WhiteFangが言及したANSIエスケープコードを使用しますが、より直感的なコードの代わりに単語を使用して抽象化します。 Windowsの場合、実際にはJAnsiライブラリが含まれますが、その上に抽象化レイヤーを作成し、Linux用に作成された直感的でシンプルなインターフェースを維持します。
このライブラリは MIT License でライセンスされているため、自由に使用してください。
JCDPのgithubリポジトリ をご覧ください。
標準出力に出力する場合、出力先の端末によって異なります。 xtermおよび他の同様の端末エミュレータでANSIエスケープコードを使用できます。以下は、xterm、PuTTY、およびKonsoleでサポートされている255色すべてを印刷するbashコードスニペットです。
for ((i=0;i<256;i++)); do echo -en "\e[38;5;"$i"m"$i" "; done
これらのエスケープコードは、任意のプログラミング言語で使用できます。アーキテクチャとTERM環境変数の内容に応じて、使用するコードを決定するライブラリに依存することをお勧めします。
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();
}
}
文字列は色情報をカプセル化しません。コンソールまたはGUIで色を設定することを考えていますか?
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 );
}
}
}