Os comandos de cores começam com \033[, tem os argumentos separados por ";" e finalizam com a letra "m". Uma documentação mais completa sobre cores pode ser encontrada em:
Então vamos a um método onde eu tenho como primeiro parâmetro um objeto do tipo String, que será a mensagem a ser exibida e um argumento de de tamanho variável, para que possamos passar quantos comandos quiser, a saber os comandos separados por ; de cores são interpretados seqüencialmente, vamos então ao método.
public static void printc(String mensagem, String... listArgs)
{
String cmd = "";
for(String args:listArgs)
{
cmd = cmd + args + ";";
}
cmd = cmd.substring(0,cmd.length() -1);
cmd = cmd + "m";
System.out.printf("%s%s%s", "\033["+cmd, mensagem, "\033[0m");
}
Dessa forma, para que eu tivesse um fundo azul com cor do texto vermelho, brilhante e piscando, chamaria o método assim:
Console.printc("\n\nAlerta!\n\n", "44", "31", "1", "5");
Segue a implementação completa da classe, com um método main que testa as funções.
// Empacotando para reutilização
package usr.lib.java;
/**
* Classe Console com operações no Modo ANSI
* @author bach
* @see http://www.vivaolinux.com.br/~bach
*
*/
public class Console {
/**
* Imprime uma mensagens coloridas
* @param mensagem Mensagem a ser mostrada na saída padrão
* @param listArgs Lista de argumentos como Cor do Fundo...
*/
public static void printc(String mensagem, String... listArgs)
{
String cmd = "";
// Separando os comandos com ";"
for(String args:listArgs)
{
cmd = cmd + args + ";";
}
// Retirando o ultimo ";"
cmd = cmd.substring(0,cmd.length() -1);
// Adicionando o m no final da frase e finalizando o comando
cmd = cmd + "m";
System.out.printf("%s%s%s",
"\033["+cmd,
mensagem,
"\033[0m"); // O Comando \033[0m da um "reset" ao console
// e volta tudo como anteriormente
}
/**
* Leva o cursor para a linha e coluna informado
* @param linha
* @param coluna
*/
public static void posiciona(int linha, int coluna)
{
System.out.printf("\033[%d;%dH", linha, coluna);
}
/**
* Limpa o Console e posiciona o final do Console
*
*/
public static void limpar()
{
System.out.printf("\033[2J");
}
/**
* Método main para testar todas as funções
* @param args
*/
public static void main(String[] args) {
Console.limpar();
Console.posiciona(10, 37);
Console.printc("Alerta!\n\n", "44", "31", "1", "5");
}
}