IDEA清空控制台以及Java中运行cmd命令实现清屏操作

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

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() 返回输入的字符

按键常量 按键 按键常量 按键 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)

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

代码如下:

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中 三种清空控制台的方法,希望让那些遇到同样问题的小伙伴们少走弯路哈。

Original: https://www.cnblogs.com/wren/p/16710686.html
Author: 请叫我阿杰
Title: IDEA清空控制台以及Java中运行cmd命令实现清屏操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573990/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Hadoop Shell命令

    http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html Original: https://www.cnblogs.com/…

    Linux 2023年5月28日
    086
  • [云计算]OpenStack这一篇就够了!

    OpenStack简介 OpenStack背景介绍 OpenStack应用场景 OpenStack发展历程 OpenStack架构 架构设计原则 架构全景图 核心服务组件 系统通信…

    Linux 2023年6月13日
    0214
  • .Net中Aspose组件调试技巧

    | 0.48分钟 | 774.4字符 | 1、引言&背景 2、水印或截断问题解决 3、即时调试的技巧 4、声明与参考资料 | SCscHero | 2022/6/4 PM2…

    Linux 2023年6月13日
    074
  • LeetCode-443. 压缩字符串

    题目来源 题目详情 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追…

    Linux 2023年6月7日
    0100
  • 甲骨文严查Java授权,换openJDK要避坑

    背景 外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。 甲骨文针对标准版Java(Java SE)有2种商业授权。2019年4月…

    Linux 2023年6月14日
    092
  • 国产银河麒麟Kylin V10操作系统

    今天想在国产银河麒麟Kylin V10操作系统中设置win+E显示资源管理器(我的电脑)的快捷键,首先需要判断麒麟操作系统使用的哪种桌面, 在终端Terminal中执行 echo …

    Linux 2023年6月14日
    089
  • js之数据类型(1)

    可以返回number,string,Boolean,object,undefined,function 运行结果如下: 注意如下几个数据类型的输出 显示数据类型转换和隐式数据类型转…

    Linux 2023年6月13日
    078
  • MSSQL中Repalce函数处理长字符串时报异常的解决方案

    阅文时长 | 17.99分钟字数统计 | 28788.8字符主要内容 | 1、引言&背景 2、问题还原 3、解决方案 4、官方解释 5、声明与参考资料『MSSQL中Repa…

    Linux 2023年6月14日
    073
  • Rook搭建Ceph

    Rook搭建Ceph 一、软件版本及先决条件 软件版本: 软件版本名称 软件版本号 Pacific 16.2.7 Rook V1.9 先决条件: K8s集群,1.16版本+ K8s…

    Linux 2023年6月13日
    075
  • pod(二):创建包含多个容器的pod(sidecar)

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    094
  • 不自由的自由职业

    大家好,我是良许,前码农,现在自由职业者。 有关注我朋友圈的小伙伴都知道,就在上周,我刚刚结束了长达 35 天的「假期」。 此言一出,立刻掀起了评论区留言狂潮,大家纷纷问我,你特么…

    Linux 2023年6月14日
    080
  • Linux安装软件时90%的人会遇到这个报错,如何解决?

    提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E:…

    Linux 2023年6月14日
    0125
  • PTA 《基础编程题目集》 6-7 统计某类完全平方数

    本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const i…

    Linux 2023年6月8日
    0106
  • 数据结构-表

    顺序表 #ifndef SEQLIST_H #define SEQLIST_H typedef int DataType; struct Node { int MaxNum; in…

    Linux 2023年6月7日
    057
  • Java学生管理系统(详解)

    下面会分享我在做这个练习时的一些方法以及程序代码 供大家参考(最后附上完整的项目代码)。 首本人只是个初学Java的小白,可能项目中有许多地方使用不规范的以及代码的格式问题会引起各…

    Linux 2023年6月6日
    081
  • linux内核源代码组织结构

    linux版本 linux 3.6.24 第一个数字主版本号 第二个数字是偶数代表是稳定版 第三个代表修订次数 Original: https://www.cnblogs.com/…

    Linux 2023年6月7日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球