Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / ANSI: Colorear consola de salida de Netbeans

ANSI: Colorear consola de salida de Netbeans

Autor jc mouse Lunes, Septiembre 19, 2016

Cuando realizamos proyectos java desde Netbeans, usamos System.out.println para imprimir datos en consola (para depurar, hacer seguimiento al código, etc), estos se presentan en color negro y si queremos resaltar un error usamos System.err.println para imprimir en color rojo, esto puede ser más que suficiente en la mayoría de los casos. Sin embargo, podemos hacer usos de códigos ANSI para colorear la salida de datos, ya sea para tener una mejor vista, para la facultad, colegio u oficina, o por simple curiosidad :).

¿Y como se hace esto?

Para comenzar un poco de teoría sobre los Códigos de Escape ANSI:

“Los códigos de escape ANSI se utilizan para dar formato a la salida de una terminal de texto y se basan en un estándar ANSI, ANSI X3.64 (también denominado ECMA-48). Cuando se intenta representar un código de escape la terminal lo intercepta y actúa en función a ese código, cambiando el color o moviendo el cursor. Las posibilidades de las secuencias de escape son muy variadas y se utilizaban para dar formato y cambiar el aspecto de lo que se va a mostrar por la terminal.” [Wikipedia]

La lista de códigos de colores están en este enlace “ANSI Color codes

Para aplicar estos códigos de colores en java, realizamos lo siguiente:

System.out.print("\u001B[34mHola Mundo\u001B[0m");

donde:

  • \u001B[34m los primeros caracteres son el codigo de ESC (001b ASCII 27 o 033 octal ) y ([34m) es el código para el color AZUL
  • “Hola Mundo” el texto que queremos colorear
  • \u001B[0m el código RESET para limpiar los estilos y colores aplicados

Esto nos daría como resultado un “Hola Mundo” de color azul.

Como podemos ver es realmente fácil aplicar estos códigos de colores, sin embargo, podemos crear una clase para automatizar esta tarea y utilizarla en cualquier otro proyecto:

import java.io.PrintStream;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class JSystem {

    /**
     * Flujo de salida Ejemplo<br>
     * JSystem.out.printColorln(color, texto)<br>
     * JSystem.out.printColor(color, texto)<br>
     * o con color de fondo<br>
     * JSystem.out.printColorln(color de fondo, color, texto)<br>
     * JSystem.out.printColor(color de fondo, color, texto)<br>
     */
    public static Out out = new Out();

    /**
     * Color ANSI para el texto
     */
    public enum Color {
        black("\u001B[30m"),
        red("\u001B[31m"),
        green("\u001B[32m"),
        yellow("\u001B[33m"),
        blue("\u001B[34m"),
        magenta("\u001B[35m"),
        cyan("\u001B[36m"),
        white("\u001B[37m"),
        reset("\u001B[0m");

        private final String value;

        private Color(String value) {
            this.value = value;
        }
        
        /**
         * Retorna el valor cadena de enum
         * @return String
         */
        public String getValue() {
            return value;
        }
    }

    /**
     * Color ANSI para el fondo
     */
    public enum ColorBg {
        black("\u001B[40m"),
        red("\u001B[41m"),
        green("\u001B[42m"),
        yellow("\u001B[43m"),
        blue("\u001B[44m"),
        magenta("\u001B[45m"),
        cyan("\u001B[46m"),
        white("\u001B[47m");

        private final String value;

        private ColorBg(String value) {
            this.value = value;
        }

        /**
         * Retorna el valor cadena de enum
         * @return String
         */
        public String getValue() {
            return value;
        }
    }

    /**
     * Constructor de clase
     */
    public JSystem() {}

    /**
     * Clase que se extiende de PrintStream
     */
    public static final class Out extends PrintStream {

        /**
         * Constrcutor de clase
         */
        public Out() {
            super(System.out);
        }

        /**
         * Metodo para pintar el texto
         *
         * @param c JSystem.COLOR
         * @param x String
         */
        public void printColorln(Color c, String x) {
            super.println(c.getValue() + x + Color.reset.getValue());
        }

        /**
         * Metodo para pintar el texto y su fondo con color
         * 
         * @param bg JSystem.BACKGROUND_COLOR
         * @param c JSystem.COLOR
         * @param x String
         */
        public void printColorln(ColorBg bg, Color c, String x) {
            super.println(bg.getValue() + c.getValue() + x + Color.reset.getValue());
        }

        /**
         * Metodo para pintar el texto
         * 
         * @param c JSystem.COLOR
         * @param x String
         */
        public void printColor(Color c, String x) {
            super.print(c.getValue() + x + Color.reset.getValue());
        }

        /**
         * Metodo para pintar el texto y su fondo con color
         * 
         * @param bg JSystem.BACKGROUND_COLOR
         * @param c JSystem.COLOR
         * @param x String
         */
        public void printColor(ColorBg bg, Color c, String x) {
            super.print(bg.getValue() + c.getValue() + x + Color.reset.getValue());
        }

    }
}

Y para poder utilizar esta clase JSystem, hacemos lo siguiente:

public class MainTest {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        //texto aburrido
        System.out.println("Text normal..... aburrido\n");
        
        /**
         * Texto coloreado
        */
        
        //Texto de color azul
        JSystem.out.printColorln(JSystem.Color.blue, "Hola Mundo...");
        
        //texto en una sola linea
        JSystem.out.printColor(JSystem.Color.cyan, "Amar es? ");
        JSystem.out.printColor(JSystem.Color.red, " borrar el Windows del disco de ella \n\n");
        
        //Texto y fondo
        JSystem.out.printColorln(JSystem.ColorBg.red, JSystem.Color.white, "Mouse no encontrado. ¿Usted tiene gato? (S/N)\n");
        
        JSystem.out.printColor(JSystem.ColorBg.blue, JSystem.Color.yellow, "Hay dos formas de escribir programas sin errores. ");
        JSystem.out.printColor(JSystem.ColorBg.yellow, JSystem.Color.blue, "Sólo la tercera funciona.\n\n");
        
        //combinando 
        JSystem.out.printColor(JSystem.Color.green, "Sabes que es amor cuando memorizas su numero de ");
        JSystem.out.printColor(JSystem.ColorBg.red, JSystem.Color.white, " IP ");        
        JSystem.out.printColor(JSystem.Color.green, " para saltar el ");
        JSystem.out.printColor(JSystem.ColorBg.yellow, JSystem.Color.black, " DNS \n\n");
        
        JSystem.out.printColorln(JSystem.ColorBg.magenta, JSystem.Color.white, " BYE ");       
        
    }
    
}

Ejecutando el código, tendremos la siguiente salida en pantalla:

ANSI Color

Descargar proyecto <<ANSIConsole>>

Y para los que usen Eclipse y ya tengan la pregunta en mente, no, no funciona en la consola de Eclipse.

Enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Decompilar archivos APK

Decompilar archivos APK

Las aplicaciones para celulares inteligentes con sistema operativo Android, se distribuyen en archivos *.APK, si como pr...

Rompecabezas evangelión de Rei Ayanami

Rompecabezas evangelión de Rei Ayanami

Información sobre la serie: Neon Genesis Evangelion (新世紀エヴァンゲリオン, también conocido como «Evangelion») es una serie de an...

Blog MVC – Iniciando el proyecto [p2]

Blog MVC – Iniciando el proyecto [p2]

Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del...

Ejemplo RESTFul Webservice en Java

Ejemplo RESTFul Webservice en Java

En este post construiremos un Servicio Web en Java bajo el estandar REST (Representational State Transfer), el cual hace...

Borrar código protegido en Netbeans

Borrar código protegido en Netbeans

Cuando programamos visualmente desde Netbeans, el IDE nos ayuda mucho al generar rapidamente código predefinido, sin emb...

Camara de Seguridad por Internet (LiveCam)

Camara de Seguridad por Internet (LiveCam)

Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

“Material Design es una guía integral para el diseño visual, de movimientos y de interacción en distintas platafor...

Un TextView autocompletado nos facilita el ingreso de información en aplicaciones móviles ya que te muestra posibles opc...

Un Tabbed Activity te permite cambiar la vista entre  fragmentos desplazando el dedo  de izquierda a derecha o de derech...

Este 12 de Mayo de 2017 se produjo un ataque masivo mundial del ransomware WannaCry  el  que afecto a más de 200000 comp...

Android Bolivia

Bandera en Alto