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: 51.803 ]

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

Construindo uma aplicação JDialog

Gerando arquivos PDF com Java e iText

As novidades do Java 1.5

Desenvolvendo aplicações em J2ME no Linux

Declaração de IRPF 2006 pelo Linux

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts