Alex Rivera | Logout

ANSI colors in Java Swing text fields

Asked 2011-08-01T13:43:07.360
10

Is there any simple way to parse Ansi colors in log files, and use it in text fields in Swing (JTextArea, JTextPAne,...)?

Edit
Report

1 Answer

13

Not tried it, but there's some code here (which needs some formatting to look nice) which claims to be an ANSI colored JTextPane subclass...


For posterity, here is the class run through NetBeans to format the code

import javax.swing.*;
import javax.swing.text.*;
import java.awt.Color;

public class ColorPane extends JTextPane {
  static final Color D_Black   = Color.getHSBColor( 0.000f, 0.000f, 0.000f );
  static final Color D_Red     = Color.getHSBColor( 0.000f, 1.000f, 0.502f );
  static final Color D_Blue    = Color.getHSBColor( 0.667f, 1.000f, 0.502f );
  static final Color D_Magenta = Color.getHSBColor( 0.833f, 1.000f, 0.502f );
  static final Color D_Green   = Color.getHSBColor( 0.333f, 1.000f, 0.502f );
  static final Color D_Yellow  = Color.getHSBColor( 0.167f, 1.000f, 0.502f );
  static final Color D_Cyan    = Color.getHSBColor( 0.500f, 1.000f, 0.502f );
  static final Color D_White   = Color.getHSBColor( 0.000f, 0.000f, 0.753f );
  static final Color B_Black   = Color.getHSBColor( 0.000f, 0.000f, 0.502f );
  static final Color B_Red     = Color.getHSBColor( 0.000f, 1.000f, 1.000f );
  static final Color B_Blue    = Color.getHSBColor( 0.667f, 1.000f, 1.000f );
  static final Color B_Magenta = Color.getHSBColor( 0.833f, 1.000f, 1.000f );
  static final Color B_Green   = Color.getHSBColor( 0.333f, 1.000f, 1.000f );
  static final Color B_Yellow  = Color.getHSBColor( 0.167f, 1.000f, 1.000f );
  static final Color B_Cyan    = Color.getHSBColor( 0.500f, 1.000f, 1.000f );
  static final Color B_White   = Color.getHSBColor( 0.000f, 0.000f, 1.000f );
  static final Color cReset    = Color.getHSBColor( 0.000f, 0.000f, 1.000f );
  static Color colorCurrent    = cReset;
  String remaining = "";

  public void append(Color c, String s) {
    StyleContext sc = StyleContext.getDefaultStyleContext();
    AttributeSet aset = sc.addAttribute(SimpleA
answered 2011-08-01T13:57:29.890

Your Answer