2011-05-02 53 views
7

我想在控制檯窗口中將同一位置寫入一個字符。使用java編寫與控制檯窗口中的相同位置

我想寫的字符是/-\_。這會讓我有點微調,我可以顯示進度或加載。

雖然你如何將字符寫入相同的位置?否則,你會結束這樣的事情/-\_/-\_/-\

+1

這是用於Windows終端還是其他終端? – 2011-05-02 16:32:24

+0

Windows現在,但希望它是跨平臺 – user489041 2011-05-02 16:40:08

回答

17

隨着Java 6中您可以使用Console做這樣的事情:

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是特殊的退格字符。打印刪除線上的最後一個字符。通過開始打印|,然後在所有其他字符之前加上\u0008,即可獲得微調器行爲。

請注意,這可能不是與所有控制檯100%兼容(並且System.console()可返回null)。

另請注意,您不一定非要使用控制檯類,因爲將此序列打印到標準輸出通常同樣適用。

+0

+1哇!大!我不知道! – MarcoS 2011-05-02 16:43:02

+0

在舊的MS-DOS日子裏它曾經是'\ b' ... – Matthieu 2018-03-08 16:09:56

2

我認爲Java本身並不允許這樣做。你需要使用一些永恆的圖書館。也許Java Curses Library可以幫助你。