Как выделить цветом в java
Перейти к содержимому

Как выделить цветом в java

  • автор:

Как можно выводить в Java разным цветом сообщения в консоли от логгера в зависимости от типа сообщения?

Вывожу в программе логи в консоль через java.util.logging.Logger.

Выводимые строки обрабатываются этим форматером

package l2p; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; public class ConsoleLogFormatter extends Formatter < private static final String CRLF = "\r\n"; private static final SimpleDateFormat tsformat = new SimpleDateFormat("HH:mm:ss.SSS "); private Date ts = new Date(); @Override public String format(LogRecord record) < StringBuffer output = new StringBuffer(); ts.setTime(record.getMillis()); output.append(tsformat.format(ts)); output.append(record.getMessage()); output.append(CRLF); if (record.getThrown() != null) try < StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); record.getThrown().printStackTrace(pw); pw.close(); output.append(sw.toString()); output.append(CRLF); >catch (Exception ex) <> return output.toString(); > > 

И собственно говоря интересует вопрос — как можно задать цвет строкам в зависимости от типа сообщения — fine, info, warning и т.д.
Притом это должно работать как в консоли Windows, так и в консоли Linux.

Может кому встречались какие-то готовые классы на эту тему или хотя бы подскажите в каком направлении копать.

  • Вопрос задан более трёх лет назад
  • 21654 просмотра

3 комментария

Оценить 3 комментария

Вывод цветного текста в консоль с помощью System.out.println в Java

В обычной практике программирования на Java часто возникает ситуация, когда требуется вывести текст в консоль разными цветами. Это может быть полезно для отслеживания статуса выполнения программы, для разделения типов выводимых данных или для визуального обозначения ошибок.

Например, в приложении, которое обрабатывает и передает данные, можно было бы выводить входящие данные зеленым цветом, а исходящие – красным. Это существенно упрощает отслеживание процесса обработки данных и делает его более наглядным.

Существует несколько способов вывода цветного текста в консоль в Java. Одним из самых простых является использование управляющих последовательностей ANSI. Это специальные коды, которые интерпретируются терминалом как команды для изменения цвета текста.

Например, для вывода красного текста можно использовать следующий код:

System.out.println("\u001B[31m" + "Красный текст");

В этом примере, «\u001B[31m» – это управляющая последовательность ANSI, которая задает красный цвет текста.

Если нужно изменить цвет фона, то можно использовать другие управляющие последовательности. Например, для установки красного фона используется код «\u001B[41m»:

System.out.println("\u001B[41m" + "Текст на красном фоне");

Важно помнить, что после изменения цвета текста или фона все последующие выводы в консоль будут с этими установками. Чтобы вернуться к стандартным настройкам, нужно использовать управляющую последовательность для сброса – «\u001B[0m»:

System.out.println("\u001B[31m" + "Красный текст" + "\u001B[0m");

В этом примере после вывода красного текста цвет сбрасывается, и все последующие выводы в консоль будут стандартного цвета.

Таким образом, с помощью управляющих последовательностей ANSI можно легко и просто выводить в консоль цветной текст в Java.

Работа с цветом в Java

Работа с цветом в Java

В Java поддерживаются цвета в переносимой, аппаратно-независимой форме. Цветовая система в библиотеке AWT позволяет сначала задать какой угодно цвет, а затем найти наилучшее соответствие этому цвету с учетом аппаратных ограни­чений, накладываемых на отображение в том устройстве, где выполняется аплет или прикладная программа.

Таким образом, прикладной код не должен зависеть от того, насколько отличается поддержка цвета в разных аппаратных устройствах. Цвет инкапсулируется в классе Color.

В классе Color определяется несколько констант (вроде Color.black) для описания наиболее употребительных используемых цветов.

В следующей программе мы создаем экземпляр цвета с помощью конструктора класса Color. С помощью String объявляем переменную Иван Франко которая будет ссылаться на текст «Критика на творчество Ивана Франко». Данный текст будем выводить в окошко аплета с тремя разными цветами c1, c2 и c3.

Как выделить цветом в java

В приложении Android также можно определять ресурсы цветов (Color). Они должны храниться в файле по пути res/values и также, как и ресурсы строк, заключены в тег . Так, по умолчанию при создании самого простого проекта в папку res/values добавляется файл colors.xml :

  #FFBB86FC #FF6200EE #FF3700B3 #FF03DAC5 #FF018786 #FF000000 #FFFFFFFF  

Цвет определяется с помощью элемента . Его атрибут name устанавливает название цвета, которое будет использоваться в приложении, а шестнадцатеричное число — значение цвета.

Для задания цветовых ресурсов можно использовать следующие форматы:

  • #RGB (#F00 — 12-битное значение)
  • #ARGB (#8F00 — 12-битное значение с добавлением альфа-канала)
  • #RRGGBB (#FF00FF — 24-битное значение)
  • #AARRGGBB (#80FF00FF — 24-битное значение с добавлением альфа-канала)

Чтобы не трогать и не портить данный файл, определим свой новый файл ресурсов и для этого добавим в папку res/values новый файл ресурсов, который назовем my_colors.xml .

Использование цвета в Android Studio и ресурсы color

Изменим файл my_colors.xml , добавив в него пару цветов:

  #A0EAE1 #00695C  

Применим цвета в файле activity_main.xml :

С помощью атрибута android:textColor устанавливается цвет текста в TextView, а атрибут android:background устанавливает фон TextView. В качестве значения они используют цвет, например, в том же шестнадцатеричном формате. Для получения самого цвета после «@color/» указывается имя ресурса.

Использование цвета в Android и Java и ресурсы color

Также можно использовать цветовые ресурсы в коде MainActivity:

package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.content.res.Resources; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); // получаем ресурсы Resources resources = getResources(); int textColor = resources.getColor(R.color.textViewFontColor, null); int backgroundColor = resources.getColor(R.color.textViewBackColor, null); ConstraintLayout constraintLayout = new ConstraintLayout(this); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; TextView textView = new TextView(this); textView.setText("Hello Android"); textView.setTextSize(32); // используем ресурсы color textView.setTextColor(textColor); textView.setBackgroundColor(backgroundColor); textView.setLayoutParams(layoutParams); constraintLayout.addView(textView); setContentView(constraintLayout); >>

Для получения цвета из ресурсов применяется метод resources.getColor() , который принимает два параметра. Первый параметр — идентификатор ресурса, цвет которого надо получить. Второй параметр представляет тему. Но поскольку в данном случае тема не важна, для этого параметра передаем значение null

Следует учитывать, что метод resources.getColor() с двумя параметрами, который использован выше, доступен, если для минимальная версия Android не ниже Android 6.0 (или Android 23). Однако минимальная версия Android ниже, то можно использовать устаревшую версию с одним параметром:

int textColor = resources.getColor(R.color.textViewFontColor); // вместо //int textColor = resources.getColor(R.color.textViewFontColor, null);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *