谁能告诉我在 Java 中清晰屏幕使用的代码是什么?
例如,在 C + + 中:
system("CLS");
在 Java 中用什么代码来清除屏幕?
一种获得这种效果的方法是打印多个结束行(“ n”)并模拟清晰的屏幕。最后清除,最多在 unix 外壳中,不删除以前的内容,只是将其向上移动,如果向下滚动就可以看到以前的内容。
下面是一个示例代码:
for (int i = 0; i < 50; ++i) System.out.println();
如果您想要一种更加独立于系统的方法来完成这项工作,那么您可以使用 JLine库和 ()。审慎地检查 支持 JLine 和 ANSI在当前环境中是否值得这样做。
下面这些代码对我很有用:
import jline.console.ConsoleReader; public class JLineTest { public static void main(String... args) throws Exception { ConsoleReader r = new ConsoleReader(); while (true) { r.println("Good morning"); r.flush(); String input = r.readLine("prompt>"); if ("clear".equals(input)) r.clearScreen(); else if ("exit".equals(input)) return; else System.out.println("You typed '" + input + "'."); } } }
在运行此命令时,如果您在提示符处键入“ clear”,它将清除屏幕。请确保从适当的终端/控制台运行它,而不是在 Eclipse 中。
我会这么处理。这种方法适用于 Windows 操作系统和 Linux/Unix 操作系统(这意味着它也适用于 Mac OS X)。
public final static void clearConsole() { try { final String os = System.getProperty("os.name"); if (os.contains("Windows")) { Runtime.getRuntime().exec("cls"); } else { Runtime.getRuntime().exec("clear"); } } catch (final Exception e) { // Handle any exceptions. } }
注意,如果您在 IDE 中运行,这个方法通常会清除控制台。
GetRuntime () . exec (cls)不能在我的 XP 笔记本电脑上工作
for(int clear = 0; clear < 1000; clear++) { System.out.println("\b") ; }
希望这个有用
你得用 JNI。
首先使用 Visual Studio 创建一个. dll,即调用系统(“ cls”)。 然后使用 JNI 来使用这个 DDL。
我发现这篇文章很不错:
Http://www.planet-source-code.com/vb/scripts/showcode.asp?txtcodeid=5170&lngwid=2
您可以使用 cls的模拟 for (int i = 0; i < 50; ++i) System.out.println();
cls
可以使用以下代码清除命令行控制台:
public static void clearScreen() { System.out.print("\033[H\033[2J"); System.out.flush(); }
警告:
进一步阅读 看看这个
由于这里有几个答案显示 Windows 的非工作代码,这里有一个澄清:
Runtime.getRuntime().exec("cls");
这个命令执行 没有工作,原因有二:
在标准的 Windows 安装中,没有可以通过 Runtime.exec调用的名为 cls.exe或 cls.com的可执行文件,因为众所周知的命令 cls是内置在 Windows 的命令行解释器中的。
Runtime.exec
cls.exe
cls.com
当通过 Runtime.exec启动一个新进程时,标准输出被重定向到一个管道,初始化 Java 进程可以读取这个管道。但是,当 cls命令的输出被重定向时,它不会清除控制台。
为了解决这个问题,我们必须调用命令行解释器(cmd)并告诉它执行一个允许调用内置命令的命令(/c cls)。此外,我们必须直接将其输出通道连接到 Java 进程的输出通道,该通道从 Java7开始,使用 inheritIO():
cmd
/c cls
inheritIO()
import java.io.IOException; public class CLS { public static void main(String... arg) throws IOException, InterruptedException { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); } }
现在,当 Java 进程连接到控制台时,即从命令行启动而没有输出重定向时,它将清除控制台。
如果您在 Bluej 或任何其他类似的软件中这样做,那么这种方法就可以工作。
System.out.print('\u000C');
在类中创建一个方法,如下所示: [就像 @ Holger所说的 给你。]
public static void clrscr(){ //Clears Screen in java try { if (System.getProperty("os.name").contains("Windows")) new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); else Runtime.getRuntime().exec("clear"); } catch (IOException | InterruptedException ex) {} }
这种方法至少适用于 windows,到目前为止我还没有检查过 Linux。如果有人为 Linux 检查它,请让我知道它是否工作(或不)。
另一种方法是在 clrscr()中编写这段代码:
clrscr()
for(int i = 0; i < 80*300; i++) // Default Height of cmd is 300 and Default width is 80 System.out.print("\b"); // Prints a backspace
我不建议你使用这种方法。
试试以下方法:
System.out.print("\033\143");
这在 Linux 环境中可以很好地工作
您需要使用控制字符作为反斜杠(b)和回车符(r)。默认情况下它是禁用的,但是 Console 视图可以解释这些控件。
Windows > Preferences and 运行/调试 > 控制台并选择 解释 ASCII 控制字符启用它
完成这些配置后,您可以使用以下控制字符管理控制台:
T-tab.
B-backspace (在文本中向后退一步或删除一个字符)。
新线路。
R-回程
F 型饲料。
更多信息请访问: https://www.eclipse.org/eclipse/news/4.14/platform.php
试试这个: 只能在控制台上工作,不能在 NetBeans 集成控制台上工作。
public static void cls(){ try { if (System.getProperty("os.name").contains("Windows")) new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); else Runtime.getRuntime().exec("clear"); } catch (IOException | InterruptedException ex) {} }
通过综合所有给定的答案,这种方法应该适用于所有环境:
public static void clearConsole() { try { if (System.getProperty("os.name").contains("Windows")) { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); } else { System.out.print("\033\143"); } } catch (IOException | InterruptedException ex) {} }