Programando em Java para Console

Esse artigo demonstra a criação de um pequeno Framework com algumas funcionalidades simples para programação de aplicativos Java para console, usando as operações no modo ANSI para posicionar o cursor, mudar cor e limpar a tela.

[ Hits: 49.077 ]

Por: Sebastião Relson Reis da Luz em 25/01/2007 | Blog: http://tribodoci.net/


Cores



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");
   }

}
Página anterior     Próxima página

Páginas do artigo
   1. Programando em Java para Console
   2. Posicionando o cursor e limpando a tela
   3. Cores
   4. Dica
Outros artigos deste autor

Debian com kernel 2.6.10 - passo a passo

Leitura recomendada

Introdução ao framework Mentawai

Entendendo orientação a objetos na prática (parte 1)

Portugol Online - Software livre para facilitar o estudo de algoritmos

Declaração de IRPF 2006 pelo Linux

Transforme seu celular em terminal sem fio SSH/Telnet

  
Comentários
[1] Comentário enviado por removido em 25/01/2007 - 13:17h

Já tinha visto um artigo assim no "motd" mas usava códigos ANSI para linguagem C com o comando "printf".
O problema desses códigos é que quando o programa é terminado as cores ficam, por isso tem que devolver as cores padrões antes de terminar os programa.

Parabéns pelo artigo!

[2] Comentário enviado por Bach em 29/01/2007 - 14:51h

"leogemeostotino"

O comando {COMENTARIO}33[0m devolve as configurações padrão do console.

[3] Comentário enviado por removido em 05/02/2007 - 12:56h

Show de bola esse seu artigo, como já programei me C, tive as mesmas dificuldades que você.
Agora minha vida vai mudar no Java.

[4] Comentário enviado por M4conheiRoX em 23/10/2008 - 12:02h

bom artigo
ftz

[5] Comentário enviado por sukelly em 06/08/2010 - 16:26h

Muito bom o seu artigo.
Estudo java, pois é nessa linguagem que quero
me especializar. Parabéns pelo artigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts