opção de canvas clara no java

Existe alguma opção para limpar a canvas em java como clrscr () em C.

Como hacks sujos vão, eu gosto da solução do msparer. Um método ainda mais sujo que eu vi usado (eu nunca faria isso sozinho. Eu juro. Realmente) é escrever um monte de novas linhas para o console. Isso não limpa a canvas, mas cria a ilusão de uma canvas clara para o usuário.

char c = '\n'; int length = 25; char[] chars = new char[length]; Arrays.fill(chars, c); System.out.print(String.valueOf(chars)); 

Se você está falando sobre o console, então não. Escrever no console é apenas um caso especial de um stream de saída. Os streams de saída não sabem nada sobre a canvas, pois podem ser redirecionados para um arquivo ou outro dispositivo do sistema.

Se você está falando de um aplicativo de console, não há uma opção de canvas clara AFAIK. Uma opção bastante suja seria invocar o comando clear screen do SO subjacente.

Então é algo como

 Runtime.getRuntime().exec("cls"); 

para Windows ou

 Runtime.getRuntime().exec("clear"); 

para uma carga de outro sistema operacional. Você pode descobrir o sistema operacional com System.getProperty("os.name") .

No linux, você pode fazer algo como:

 System.out.println("\f"); 

Você também pode usar o Jcurses

Para qualquer console que ofereça suporte a escapes ANSI, o seguinte funcionaria (por exemplo, funcionaria no console do Win98).

 private final String ANSI_CLS = "\u001b[2J"; .... System.out.print(ANSI_CLS); System.out.flush(); ... 

Começando com o Win NT, isso não funcionará mais e você pode

  • Faça uma chamada JNI (por exemplo, como aqui: Java: Limpar os atributos de console e controle
  • Ou escreva um monte de linhas vazias

Caso contrário, você está sem sorte.

E a propósito. Você deve ter em mente que System.out e System.err não precisam ser console, eles podem ser configurados para o que nunca (escrevendo em um arquivo, por exemplo) um usecase onde limpar a canvas não faria qualquer sentido.

Para limpar a canvas, basta digitar:

 System.out.print('\u000C'); 

Jansi é uma excelente solução alternativa. Eu sou um codificador amador e Jansi é fácil de configurar, especialmente com o Eclipse.

O seguinte é um link para a página inicial da Jansi:

http://jansi.fusesource.org/

O seguinte é um link para um site contendo um código como uma demonstração da class AnsiConsole contida no pacote Jansi:

http://www.rgagnon.com/javadetails/java-0047.html

Você também pode tentar códigos de escape ANSI:

Se o seu terminal suportá-los, tente algo como isto:

 System.out.print("\033[2J\033[1;1H"); 

Você pode include \0333[1;1H para ter certeza se \0333[2J não mover o cursor no canto superior esquerdo.

Mais especificamente:

  • 033 é o octal do ESC
  • 2J é para limpar toda a canvas do console / terminal
  • 1;1H move o cursor para a linha 1 e coluna 1

Para o Windows, o projeto da API do Java Console fornece funcionalidade para determinar o tamanho do console e definir a posição do cursor. Limpar a canvas é trivial com isso. É uma versão 0.2 agora, então não está exatamente pronta para produção, mas funciona.

Alternativamente, você pode simplesmente imprimir algumas novas linhas via System.out.println() . 640 deve ser suficiente para todos 🙂 Não é o mesmo que limpar a canvas, mas para as intenções e propósitos do usuário.

você deve tentar com o JNA e tentar mapear bibliotecas nativas:

  • no linux você deve mapear funções C da biblioteca ncurses
  • no windows você deve mapear as funções tanto do msvcrt quanto do kernel32 , como está claramente indicado aqui

PS

deixe-me saber se você precisa de algum código de exemplo