Java中的一些清屏方法(汇总)

虽然Java中的GUI编程已经很方便,但我们还是时不时地需要在命令行中实现图形化效果(比如实验要求233),下面给出一些在Java中实现清屏或类似清屏效果的方法。

1.简单暴力法

(也就是输出许多空行~)
//
public void clean1(){
for(int i=0;i<50;i++)
System.out.println(" ");
}

这种方法不但浪费资源,而且并不彻底(如果希望,用户仍然可以轻松地查询此前输出的内容,且即便用户希望配合,也可能会由于误操作而难以复位),但胜在实现简单,可在编程过程中作为一种权宜之计。

2.借助JNI导入C++的dll,在cmd中实现清屏效果

具体实现前人已有许多完善的工作,此处仅给出链接,便于日后查询:
java——JNI(例子控制台(64位)清屏 作者:Kooing https://www.cnblogs.com/vhyc/p/5958841.html
Java实现命令行清屏功能 2017年03月25日 14:20:49 作者:_doumi
https://blog.csdn.net/xinyedoumi/article/details/65936524

这种清屏方法能够根本上达到清屏效果,但不仅实现方法复杂,且对java文件的运行环境有要求。

3.利用控制台的清屏功能,让代码模拟异常操作

解铃还须系铃人,java在GUI编程中设置了监听并模拟鼠标、键盘的方法(相当于按键精灵),故可借此实现清屏操作。这个方法也有前人已经提出:
Eclipse控制台实现清屏的方法 2016年04月22日 18:34:06 作者:Demon530
https://blog.csdn.net/qq_18144681/article/details/51222405
(但上述代码方案还有一个破绽,如果用户的鼠标并不在控制台上,则无法实现此功能,还会错过清屏机会。可调用r.movemouse(x,y);方法配合初始化时对窗口的控制使清屏必定能实现。(即便如此还有用户移动窗口的可能,可使用对Rectangle使用getBound方法,emmm,(为什么不用GUI啊)))

这种实现方法对运行平台的要求较低,且实现不算复杂,但最大的问题在于键盘事件在不同的IDE中并不通用(如Eclipse是Ctrl+R,而Netbeans是Ctrl+L)。

你可能感兴趣的:(java)