2009-11-05 17 views

Respuesta

10

cortes sucios Como ir, me gusta la solución de msparer. Un método aún más sucio que he visto utilizar (nunca lo haría yo mismo. Lo juro, realmente.) Es escribir un montón de líneas nuevas en la consola. Esto no borra la pantalla en absoluto, pero crea la ilusión de una pantalla clara para el usuario.

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

No me atreví a escribir esta respuesta. Niza :-) – LB40

+0

@LB: admito que esta es probablemente la * peor * forma de hacerlo. A veces solo tienes que compartir tus WTF. :) –

+3

¿Cómo es esto diferente de 'System.out.print ("\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n ");' que es una línea en lugar de cinco? – Tenner

7

Si estamos hablando acerca de la consola, entonces no. Escribir en la consola es solo un caso especial de una secuencia de salida. Las transmisiones de salida no saben nada sobre la pantalla, ya que pueden ser fácilmente redirigidas a un archivo u otro dispositivo del sistema.

7

Si está hablando de una aplicación de consola, entonces no hay una opción de pantalla clara AFAIK. Una opción bastante sucia sería invocar el comando de pantalla clara del sistema operativo subyacente.

Entonces es algo así como

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

para Windows o

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

para una carga de otro sistema operativo. Puede encontrar el sistema operativo con System.getProperty("os.name").

+0

'sucio' muy' sucio': D –

+2

no funciona. Lo intenté en Windows XP. – user161004

+5

Creo que 'cls' es una función incorporada, no un ejecutable real. –

0

Para Windows, el proyecto Java Console API proporciona la funcionalidad para determinar el tamaño de la consola y establecer la posición del cursor. Limpiar la pantalla es trivial con eso. Ahora es una versión 0.2, por lo que no está lista para producción, pero funciona.

O bien, simplemente puede imprimir algunas líneas nuevas a través de System.out.println(). 640 debería ser suficiente para todos :-) No es lo mismo que borrar la pantalla, pero para los propósitos y propósitos del usuario sería suficiente.

5

en Linux, se puede hacer algo como:

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

También puede utilizar Jcurses

5

Para cualquier consola que soporta ANSI escapa de la siguiente funcionaría (sería por ejemplo el trabajo en consola Win98).

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

A partir de Windows NT, esto no funcionará más y usted puede o bien

lo contrario, están fuera de suerte.

Y por cierto. debe tener en cuenta que System.out y System.err no tienen que ser consola, podrían configurarse de todas maneras (escribiendo en un archivo, por ejemplo) un uso donde borrar la pantalla no tendría ningún sentido.

+0

+1 impresionante respuesta correcta. –

0

usted debe darle una oportunidad con JNA y se puede intentar bibliotecas nativas:

  • en Linux debe asignar funciones de C desde ncurses biblioteca
  • en las ventanas debe asignar funciones tanto de msvcrt y kernel32, como se ha dicho con claridad here

PS

dejarme conocido si necesita un código de ejemplo

2

Jansi es una excelente solución. Soy un codificador aficionado y Jansi es fácil de configurar especialmente con Eclipse.

El siguiente es un enlace a la página principal de Jansi:

http://jansi.fusesource.org/

El siguiente es un enlace a un sitio que contiene un código como una demostración de clase AnsiConsole contenida en el paquete Jansi:

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

3

Para borrar la pantalla sólo tiene que escribir:

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

No funcionó para mí en Windows – paullb

2

También puede intentar ANSI códigos de escape:

Si el soporte del terminal, intentar algo como esto:

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

Puede incluir \0333[1;1H estar seguro de si \0333[2J no se mueve el cursor en la parte superior esquina izquierda.

Más específicamente:

  • 033 es el octal de ESC
  • 2J es para la limpieza de toda la pantalla de la consola/terminal de
  • 1;1H mueve el cursor a la fila 1 y la columna 1
+0

Esta es la única solución ANSI que funciona de manera consistente dentro de mi terminal Linux. Especialmente el reposicionamiento del cursor al final lo hace lucir agradable y limpio. Además, respeta el tamaño (altura) de la ventana. –