IDEA中清空控制台方法

在网上有看到各种的实现方法,比如:

Runtime.getRuntime().exec("cls");

或者:

public static void clear() {

	System.out.print("\033[H\033[2J");
System.out.flush();
}

还有:


import java.io.IOException; class Clear {
public static void main(String... arg) throws IOException, InterruptedException {
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
}
}

但是好像都不管用,所以这里给大家提供了两种正确的解决方法,话不多说,直接安排!

解决办法:

一:打印换行

这里有一个很笨的方法就是通过打印多个换行来 “清空” 之前的内容,但是这种方法会导致你往上翻依旧能看到之前的内容,而且换行之后显示的界面不会出现在控制台顶部看起来也很别扭,所以这种方法不建议使用,但我还是在这提一下,仅供参考。

System.out.println(new String(new char[50]).replace("\0", "\r\n"))

二:通过按键事件控制键盘执行清空控制台动作

  • 按键事件可以利用键盘来控制和执行一些动作,或者从键盘上获取输入,只要按下,释放一个键或者在一个组件上敲击,就会触发按键事件。KeyEvent 对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值。java 提供 KeyListener 接口处理按键事件。

  • 当按下一个键时会调用KeyPressed处理器,当松开一个键时会调用 KeyReleased 处理器,当输入一个统一编码时会调用 KeyTyped 处理器。如果这个键不是统一码(如功能键,修改键,动作键和控制键)

    每个按键事件有一个相关的按键字符和按键代码,分别由KeyEvent中getKeyChar()getKeyCode()方法返回

  • 在 IEAD 中可以通过在控制台右键点击全部清除来实现清空终端,如图:

  • 所以我们可以通过设置快捷键然后调用按键事件同样可以实现清空控制台的操作,设置快捷键的步骤如下:

  • 首先进入 IDEA 的设置界面,找到快捷键选项在右侧搜索框中搜索 clear 找到下边的全部清除选中右键点击 Add KeyBoard Shortcut (添加快捷键),输入自己想要设置的快捷键,最后点击应用,确认即可。

  • 设置好快捷键后我们就可以创建一个方法,导入对应的类即可

代码如下:


import java.awt.*;
import java.awt.event.KeyEvent; /*********************************************************************/ public static void clearConsole() throws AWTException {
Robot r = new Robot();
r.keyPress(KeyEvent.VK_CONTROL); // 按下Ctrl键
r.keyPress(KeyEvent.VK_R); // 按下R键
r.keyRelease(KeyEvent.VK_R); // 释放R键
r.keyRelease(KeyEvent.VK_CONTROL); // 释放Ctrl键
r.delay(100);
}
  • 最后在对应的位置调用该方法就可以实现清空控制台的操作了。

  • getKeyChar(): char 返回这个事件中和键相关的字符

  • getKeyCode(): int 返回这个事件中和键相关的整数键

  • keyPressed(e: KeyEvent) 在源组件上按下一个键后被调用

  • KeyReleased(e: KeyEvent) 在源组件上释放一个键后被调用

  • KeyTyped(e: KeyEvent) 在源组件上按下一个键然后释放该键后被调用

  • getKeyCode() 返回定义在表中的值

  • getKeyChar() 返回输入的字符

三:附:Java 按键事件 KeyEvent

按键常量 按键 按键常量 按键
VK_ENTER \n VK_TAB \t (Tab键)
VK_BACK_SPACE \b VK_ENTER \r (回车键)
VK_CONTROL Ctrl键 VK_ALT Alt键
VK_ESCAPE Esc键 VK_BACK_SPACE 退格键
VK_SHIFT Shift 键 VK_CONTROL 控制键
VK_HOME Home键 VK_PAUSE Pause键
VK_END End键 VK_PGUP page up键
VK_PGDN page down键 VK_CAPS_LOCK 大小写锁定键
VK_NUM_LOCK 小键盘锁定键 VK_UNDEFINED 未知键
VK_UP 上箭头 VK_DOWN 下箭头
VK_LEFT 左箭头 VK_RIGHT 右箭头
VK_F1~VK_F12 F1 ~ F12 VK_A ~ VK_Z A ~ Z
VK_0~VK_9 0 ~ 9

当然想要查看更多的 KeyEvent 可以在 IDEA 中点击 KeyEventF4 转到源码进行查看。

四:使用鼠标箭头触发按钮实现清空控制台操作

在我们的控制台右侧工具栏中可以看到一个 “ 小垃圾桶的图标 ” ,同样我们点击该图标就可以清空控制台

所以我们只需要在代码中触发控制鼠标箭头自动点击控制台右侧的 “ 清除所有” 的 “ 小垃圾桶” 图标就可以实现清空控制台,代码如下:

import java.awt.*;
import java.awt.event.InputEvent; public static void clear(int x, int y) throws AWTException{
Robot bot = new Robot();
bot.mouseMove(x, y);
bot.mousePress(InputEvent.BUTTON1_MASK);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
}

在对应位置调用该方法,输入对应坐标即可,如下这是我的图标坐标:

clear(200,780)

但是这个方法的不足就是需要定位你的控制台右侧的 “ 小垃圾桶 ” 的坐标,所以你就要去确认你的图标坐标是多少,可以通过截屏软件或者其他工具来确认坐标,但是当你打开控制台的时候可能会调整控制台的长宽,这会就会导致这个图标以及对应的坐标并不是固定的,所以还是有些小麻烦的,但是也能实现跟上一种方法同样的效果。


Windows 中清空 cmd 方法

代码如下:

public static void clearnCmd {
try {//使用命令的过程可能会出现失败,需要捕获异常
// Process process = Runtime.getRuntime().exec("cls");
new ProcessBuilder("cmd", "/c", "cls")
// 将 ProcessBuilder 对象的输出管道和 Java 的进程进行关联,这个函数的返回值也是一个
// ProcessBuilder
.inheritIO()
// 开始执行 ProcessBuilder 中的命令
.start()
// 等待 ProcessBuilder 中的清屏命令执行完毕
// 如果不等待则会出现清屏代码后面的输出被清掉的情况
.waitFor(); // 清屏命令
} catch (Exception e) {
e.printStackTrace();
}
}

在对应位置直接调用该方法即可实现清空cmd。(只能在Windows中运行程序时使用)


总结:

  以上就是介绍的 Windows 下清空 cmd 和 idea中 三种清空控制台的方法,希望让那些遇到同样问题的小伙伴们少走弯路哈。

IDEA清空控制台以及Java中运行cmd命令实现清屏操作的更多相关文章

  1. 怎样在Java中运行Hive命令或HiveQL

    这里所说的在Java中运行Hive命令或HiveQL并非指Hive Client通过JDBC的方式连接HiveServer(or HiveServer2)运行查询,而是简单的在部署了HiveServe ...

  2. java中执行cmd命令

    一.java执行cmd命令的三种方式:http://www.jb51.net/article/80829.htm 参考:https://www.cnblogs.com/zhufu9426/p/7928 ...

  3. JAVA中调用CMD命令,并输出运行结果

    package com.wzw.util; import java.io.BufferedReader; import java.io.InputStreamReader; public class ...

  4. mysql在cmd命令下执行数据库操作

    windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下的mysql中是导入不进去的,因为mysql数据库本身就有默认的导入文件大 ...

  5. Java中运行javascript代码

    Java中运行javascript代码 1.Java 代码 2.JS代码 2.1demoWithParams.js 2.2demoWithListParams.js 原文作者:russle 原文地址: ...

  6. Atitit.运行cmd 命令行 php

    Atitit.运行cmd 命令行 php 1. 运行cmd 命令行,调用系统命令的基础 1 1.1. 实际运行模式 1 1.2. 空格的问题 1 1.3. 中文路径的问题.程序文件读取编码设置 1 1 ...

  7. ECStore在Win环境下如何运行CMD命令

    大多数程序员使用windows开发环境来做ECStore二次开发,经常需要使用 ECStore自带的cmd命令进行一些系统操作,如清除缓存(cacheclean),升级程序(update),创建新的a ...

  8. C#隐式运行CMD命令(隐藏命令窗口)

    原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...

  9. [delphi]运行cmd命令,并取得输出字符

     http://blog.csdn.net/nerdy/article/details/8969189 [delphi]运行cmd命令,并取得输出字符 标签: delphiCMD命令 2013-05- ...

随机推荐

  1. 手把手教你定位线上MySQL慢查询问题,包教包会

    1. 慢查询日志的作用 慢查询日志默认不开启,建议手动开启,方便我们定位线上问题. 执行时间超过阈值的SQL会被写入到慢查询日志当中,这样可以帮助我们记录执行时间过长的SQL语句,定位线上慢SQL问题 ...

  2. CF242E XOR on Segment

    CF242E XOR on Segment codeforces 洛谷 关于异或,无法运用懒标记实现区间异或: 可以像trie树一样拆位,将每个值拆成二进制数,对此建相应个数的线段树. 0 1与 0异 ...

  3. 万答#5,binlog解析出来的日志为何无法恢复

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 问题描述 问题来自一位群友,简单说就是用 mysqlbinlog 工具读取 bi ...

  4. DolphinScheduler 功能开发:⼯作流级别任务空跑(后端),测试工作流是否正确执行...

    点击上方 蓝字关注我们 ✎ 编 者 按 在今年由中国科学院软件研究所主办的开源软件所供应链点亮计划-开源之夏活动中,有不少小伙伴提交了关于 DolphinScheduler 的项目,本期是来自成都信息 ...

  5. java-RandomAccessFile操作以及IO流简单使用

    1.1RandomAccessFile--使用RAF读写基本类型数据,以及了解Raf的指针操作 write有相对应的写入基本类型的方法 void seek(Long pos)调整RAF指针位置,可以在 ...

  6. java学习第二天多态.day09

    接口 接口总结 接口表示一种规约(规范.标准),它里面定义了一些列抽象方法(功能),它可以被多个类实现. 1接口名称首写字母用I,表示一个接口,后命名使用驼峰命名 2.接口中定义的都是抽象方法,所以可 ...

  7. java过滤器的写法

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 原文地址:http://t.csdn.cn/ZD88A ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 过滤器实际上就是 ...

  8. 流媒体协议扫盲(rtp/rtcp/rtsp/rtmp/mms/hls)

    RTP           参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...

  9. KingbaseES R6 集群备库网卡down测试案例

    数据库版本: test=# select version(); version ------------------------------------------------------------ ...

  10. 【读书笔记】C#高级编程 第二十五章 事务处理

    (一)简介 事务的主要特征是,任务要么全部完成,要么都不完成. (二)概述 事务由事务管理器来管理和协调.每个影响事务结果的资源都由一个资源管理器来管理.事务管理器与资源管理器通信,以定义事务的结果. ...