Как установить цвет строки
Кто-нибудь знает, как установить цвет строки, которая будет напечатана с помощью System.out
?
Это код, который у меня есть:
System.out.println("TEXT THAT NEEDS TO BE A DIFFERENT COLOR.");
Ответы
Ответ 1
Консоль
Смотрите страницу Wikipedia на экранах ANSI для полного набора последовательностей, включая цвета.
Но для одного простого примера ( "Печать красным" ) в Java (как вы отметили это как Java):
System.out.println("\u001B31;1mhello world!");
3 указывает цвет изменения, первый 1 указывает на красный (зеленый будет 2), а второй 1 указывает на "яркий" режим.
GUI
Однако, если вы хотите печатать в 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)
Ответ 2
для linux (bash) следующий код работает для меня:
System.out.print("\033[31mERROR \033[0m");
the\033 [31m переключит цвет на красный и \033 [0m вернет его в нормальное состояние.
Ответ 3
У Google, очевидно, есть библиотека для такого рода вещей:
http://code.google.com/p/jlibs/wiki/AnsiColoring
Также есть статья Javaworld, которая решает вашу проблему:
http://www.javaworld.com/javaworld/javaqa/2002-12/02-qa-1220-console.html
Ответ 4
SetColor(). Предполагая, что вы используете Graphics g в контексте AWT.
Дополнительную информацию см. в документации.
Ответ 5
Если вы печатаете на stdout, это зависит от терминала, на который вы печатаете. Вы можете использовать коды перехода ansi на xterms и другие аналогичные эмуляторы терминала.
Здесь bash фрагмент кода, который будет печатать все 255 цветов, поддерживаемых xterm, putty и Konsole:
for ((i=0;i<256;i++)); do echo -en "\e[38;5;"$i"m"$i" "; done
Вы можете использовать эти escape-коды на любом языке программирования. Лучше полагаться на библиотеку, которая будет определять, какие коды использовать в зависимости от архитектуры и содержимого переменной среды TERM.
Ответ 6
Я создал API под названием JCDP, бывший JPrinter, который представляет собой цветной отладочный принтер Java. Для Linux он использует escape-коды ANSI, упомянутые WhiteFang, но абстрагирует их, используя слова вместо кодов, которые намного интуитивно понятны. Для Windows он фактически включает библиотеку JAnsi, но создает над ним слой абстракции, поддерживая интуитивно понятный и простой интерфейс, созданный для Linux.
Эта библиотека лицензируется в соответствии с Лицензией MIT, поэтому не стесняйтесь ее использовать.
Посмотрите JCDP github репозиторий.
Ответ 7
Загрузите 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();
}
}
Ответ 8
Строки не инкапсулируют информацию о цвете. Вы хотите установить цвет в консоли или в графическом интерфейсе?
Ответ 9
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 );
}
}
}