2011-05-02 16 views
7

Me gustaría escribir un carácter en la misma ubicación en una ventana de consola.Escribir en la misma ubicación en una ventana de consola con java

Los caracteres que me gustaría escribir son /-\_. Esto me dará un pequeño giro que puedo mostrar para mostrar el progreso o la carga.

¿Cómo se pueden escribir los caracteres en la misma ubicación? De lo contrario, terminará con algo como esto /-\_/-\_/-\

+1

¿Es esto para un terminal de Windows u otro terminal? –

+0

Windows en este momento, pero le gustaría que sea multiplataforma – user489041

Respuesta

17

Con Java 6 se puede utilizar el Console a hacer algo como esto:

class Main { 
    public static void main(String[] args) throws InterruptedException { 
     String[] spinner = new String[] {"\u0008/", "\u0008-", "\u0008\\", "\u0008|" }; 
     Console console = System.console(); 
     console.printf("|"); 
     for (int i = 0; i < 1000; i++) { 
      Thread.sleep(150); 
      console.printf("%s", spinner[i % spinner.length]); 
     } 
    } 
} 

\u0008 es el carácter especial de retroceso. Impresión que borra el último carácter en la línea. Al comenzar a imprimir un | y luego anteponer el \u0008 antes que a los demás caracteres, se obtiene el comportamiento del girador.

Tenga en cuenta que esto puede no ser 100% compatible con todas las consolas (y que System.console() puede devolver null).

También tenga en cuenta que no necesariamente tiene que usar la clase de la consola, ya que la impresión de esta secuencia a la salida estándar generalmente funciona igual de bien.

+0

+1 ¡guau! ¡estupendo! ¡No sabía sobre eso! – MarcoS

+0

Solía ​​ser '\ b' en los viejos días de MS-DOS ... – Matthieu

2

Creo que Java no permite eso de forma nativa. Necesitas usar alguna biblioteca eterna. Tal vez Java Curses Library puede ayudarlo.

Cuestiones relacionadas