用Java在控制台窗口中写入相同位置

9
我想在控制台窗口的同一位置写入字符。
我想要写的字符是 / - \ _,这样可以得到一个小的旋转图标,以显示进度或加载状态。
但是如何将字符写入同一位置呢?否则,你会得到类似于这样的结果 /-\_/-\_/-\。

1
这是为 Windows 终端还是其他终端? - Dilum Ranatunga
目前只能在Windows上运行,但希望它能够跨平台。 - user489041
2个回答

23

使用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)。

还要注意,您不一定需要使用控制台类,因为将此序列打印到标准输出通常同样有效。


2
我认为Java本身不允许这样做。您需要使用一些外部库 - 也许JCurses可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接