精华内容
下载资源
问答
  • java控制台的清屏

    万次阅读 2008-09-04 12:25:00
    最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在...但这种是建立子线程,不能控制当前屏幕的清屏,2.就更搞笑了,System.out.println("/n /n

    最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在网上搜了很久也没找到成功的解决方案,所有的方案都是带有喜剧性的,1.Runtime.getRuntime().exec("cmd /c cls");但这种是建立子线程,不能控制当前屏幕的清屏,2.就更搞笑了,System.out.println("/n /n /n /n /n /n /n /n /n /n /n /n /n /n /n /n");当然这种方法在某些情况下达到了目的,不过总觉得怪怪的,有点不尽人意3.System.out.println(" /b /b /b /b /b /b /b /b /b /b /b");这个就更搞笑了,呵呵,大家说呢;

     

    所以我自己思考了一个方案:

     

    要java在windows下的cmd下实现清屏,我想了个方案,就是通过JNI调用一个库文件(.dll),这个dll中包含一个实现清屏功能(system(“cls”))的导出函数。在java程序中加入代码调用这个库,即可实现当前屏幕的清屏。(--JNI的使用,以及dll的制作在百度随便搜索即可找到,这里请恕不多谈^_^--)

     

    实现步骤:

    1.写一个dll.h

     

    #ifndef _Included_Cls
    #define _Included_Cls
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    JNIEXPORT void JNICALL Java_Cls_clear
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    }
    #endif
    #endif

    2.再写一个dllmain.c

     

    #include "jni.h"
    #include "dll.h"
    #include "stdlib.h"
    JNIEXPORT void JNICALL Java_Cls_clear(JNIEnv *env, jobject obj)
    {
    system("cls");
    }

     

    3.用vc++建立一个dll工程(我的工程名为clsTest)

    导入dllmain.c 和dll.h以及jdk下include目录下的jni.h和include/win32下的jni_md.h 共四个文件

    然后build 这个dll工程,将生成的clsTest.dll放入到你的java.library.path中的其中一个目录下

    查看java.libray.path用代码System.out.print(System.setProperty("java.library.path","."));

    我是根据我的配置将clsTest.dll放到C:/Program Files/Java/jdk1.6.0/jre/bin下

    4.测试

    新建一个测试类Test.java

     

    public class Test{
    public native void clear();//左方的native是通知Java這個函数会使用到外部函数 
     
    static {
    System.loadLibrary("clsTest"); //左方的代码代表我要载入clsTest.dll的动态链接

    }

    public static void main(String[] args) {
    final Test a=new Test();

    Runnable k=new Runnable(){
     public void run(){
      for(int i=0;i<20;i++){
       System.out.println(i);
       try {
        Thread.sleep(1000); 
        a.clear();
       } catch (Exception e) {
       }

      }
     }
     };
    k.run();//执行线程
    }
    }
    5.在cmd下 javac Test.java

    java Test

    即可看到运行效果^_^~

     

    注:该解决方案只解决控制台程序的刷屏,且必须是系统控制台,而eclipse等其它IDE的控制台是无法用这种方式进行清屏的,如果要实现,必须使用入侵IDE的进程,因为在eclipse的内置控制台右击邮件有个clear功能,实际上就是个setText(null)事件,入侵IDE就是要在外部制造这个事件,其它IDE要也差不多。

    同样,java的这种刷屏解决方案也适用于linux,不同是其链接库文件是.so,总之原理是差不多的。

     

    展开全文
  • Java】Eclipse控制台清屏方法最近在跟着教学课程...去模仿图形界面,肯定要涉及到控制台的清屏吧,老师也有提到。本以为Java有直接清屏的方法可以调用的,结果查了下然后很郁闷,Java并没有控制台清屏的方法去调...

    【Java】Eclipse控制台清屏方法

    最近在跟着教学课程学习Java语言,老师之前是做职业程序猿的。

    最近布置了一个简单的课后作业,就是在控制台去模仿ATM机的界面,并实现一些基本的业务逻辑。

    在控制台用System.out.println();去模仿图形界面,肯定要涉及到控制台的清屏吧,老师也有提到。本以为Java有直接清屏的方法可以调用的,结果查了下然后很郁闷,Java并没有控制台清屏的方法去调用。网上搜到的一些解决方案针对的是Windows操作系统的cmd控制台的,对于我所使用的Eclipse开发环境的控制台是无效的。

    然后发现了Eclipse控制台手动清屏的方法,就是在控制台界面鼠标右击,右键菜单有一个 清除 的选项,如下图:

    并且这个功能对应了一个快捷键,Ctrl + R,但是只有在右键菜单显示的情况下按下这个快捷键才有效。

    于是,问题的入手点就在这个快捷键,能否让代码帮我们在控制台界面自动打开右键菜单并按下Ctrl + R,从而实现控制台清屏。

    答案自然是肯定的,Java提供了一个用来产生本机输入事件的机器人类 :java.awt.Robot,这个类有一系列关于鼠标键盘的方法可以来调用。查了下这个类的一些方法,最终实现了上面所说的功能。来看代码:

    public static void clear() throws AWTException

    {

    Robot r = new Robot();

    r.mousePress(InputEvent.BUTTON3_MASK); // 按下鼠标右键

    r.mouseRelease(InputEvent.BUTTON3_MASK); // 释放鼠标右键

    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);

    }

    相关方法的功能已经在注释中给出了,所以只要在程序的适当位置去调用便可实现清屏功能。

    如需转载请注明来源。

    展开全文
  • Eclipse控制台实现清屏的方法

    万次阅读 多人点赞 2016-04-22 18:34:06
    Java】Eclipse控制台清屏方法最近在跟着教学课程...去模仿图形界面,肯定要涉及到控制台的清屏吧,老师也有提到。本以为Java有直接清屏的方法可以调用的,结果查了下然后很郁闷,Java并没有控制台清屏的方法去调用

    【Java】Eclipse控制台清屏方法

    最近在跟着教学课程学习Java语言,老师之前是做职业程序猿的。

    最近布置了一个简单的课后作业,就是在控制台去模仿ATM机的界面,并实现一些基本的业务逻辑。

    在控制台用System.out.println();去模仿图形界面,肯定要涉及到控制台的清屏吧,老师也有提到。本以为Java有直接清屏的方法可以调用的,结果查了下然后很郁闷,Java并没有控制台清屏的方法去调用。网上搜到的一些解决方案针对的是Windows操作系统的cmd控制台的,对于我所使用的Eclipse开发环境的控制台是无效的。

    然后发现了Eclipse控制台手动清屏的方法,就是在控制台界面鼠标右击,右键菜单有一个 清除 的选项,如下图:

    这里写图片描述

    并且这个功能对应了一个快捷键,Ctrl + R,但是只有在右键菜单显示的情况下按下这个快捷键才有效。

    于是,问题的入手点就在这个快捷键,能否让代码帮我们在控制台界面自动打开右键菜单并按下Ctrl + R,从而实现控制台清屏。

    答案自然是肯定的,Java提供了一个用来产生本机输入事件的机器人类 :java.awt.Robot,这个类有一系列关于鼠标键盘的方法可以来调用。查了下这个类的一些方法,最终实现了上面所说的功能。来看代码:

    public static void clear() throws AWTException
        {
            Robot r = new Robot();
            r.mousePress(InputEvent.BUTTON3_MASK);       // 按下鼠标右键
            r.mouseRelease(InputEvent.BUTTON3_MASK);    // 释放鼠标右键
            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);       
    
        }
    

    相关方法的功能已经在注释中给出了,所以只要在程序的适当位置去调用便可实现清屏功能。


    如需转载请注明来源。

    展开全文
  • 看到网上有人讨论Java如何实现对控制台清屏,看到内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧import static java.lang.System.out;/*** Build by netbeans* @author Felix Wu*/public class ...

    看到网上有人讨论Java如何实现对控制台清屏,看到的内容不是很理想。所以把这些内容总结一下。

    直观一点,先看下代码吧

    import static java.lang.System.out;

    /**

    * Build by netbeans

    * @author Felix Wu

    */

    public class ConsleRewriteTest {

    public static void main(String[] agrs) {

    out.print(          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );

    pause();

    out.print( "/r" + "                                                         " );

    int total = 100;

    for( int i=1; i

    pause();

    out.print( "/r" + i + "/"+total  );

    }

    }

    private static void pause() {

    try {

    Thread.sleep(1000L);

    } catch (InterruptedException e) {

    //Swallow this exception

    }

    }

    }

    严格上说控制台是Java进程的输出设备。在Java中对应System.out流,对这个流而言你只能向其中输入内容。那么Java程序怎么和他控制台通讯呢?

    方式一:通过ASCII码的控制字符'/r'.

    '/r'表示回车,就回到行首。'/n'表示换行,即移到下一行(光标垂直下移,如果光标在原行的第n个字符位置,那么就下移到下一行的第n个字符位置)。那么"/r/n"表示回车换行,即移到下一行的行首。

    注意上面对'/r'和'/n'的解释是ASCII码标准含义。但是不同的软件对'/n'解释不尽相同。比如按照ASCII码的标准解释回车换行是"/r/n",而UNIX为了节约存储空间,其API在保存采用ASCII编码的文本时用'/n'替代"/r/n",相应的在读取显示时'/n'效果等效于"/r/n"。简而言之,在UNIX的API中'/n'的意思是回车换行("/r/n")而不是标准的换行。JVM也采用了这个风格。但是在Windows系统中其API采用了'/n'的标准本意。对'/n'的不同解释,造成了同样的文本在不同的软件中的显示效果不相同。

    方式二:和输出设备通讯.

    这个方式我没有尝试过,不过用JNI可以实现。输出设备可能是软件(比如常见的控制台窗口),也可能是硬件。如果是软件的话,Java程序和此软件通讯,让其清屏(提供此功能的情况下)。如果是硬件可以和驱动通讯让其清屏(提供此功能的情况下)。

    对应上面给的例子,不要直接在NB6.8中运行,因为NB6.8的控制台没有解析'/r'控制字符,这应该是其一个bug。在window上可以直接在cmd中运行。

    展开全文
  • JAVA 控制台清屏

    千次阅读 2011-06-09 23:11:00
    看到网上有人讨论Java如何实现对控制台清屏,看到内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧import static java.lang.System.out;/** * Build by netbeans * @author Felix Wu */public ...
  • 最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,...但这种是建立子线程,不能控制当前屏幕的清屏,2.就更搞笑了,System.out.println("/n /n ...
  • Java控制台清屏

    万次阅读 2010-06-12 12:20:00
    看到网上有人讨论Java如何实现对控制台清屏,看到内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧import static java.lang.System.out; /**  * Build by netbeans  * @author Felix Wu  *...
  • 使用JNI实现Windows下的控制台清屏(JDK13) ...为了更新棋盘,当然要频繁清空控制台的显示。控制台作为显示本来就够low了,要是再没点要求,那也太混了。 ​ 网上查找了一圈,总体来说有几种: ​ ①:打印...
  • 因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面操作系统情况,可以通过JNI(Java Native Interface)技术实现java后台调用C++/Cdll(Dynamic Linkable Library,动态链接库)文件。...
  • JAVA实现控制台清屏效果

    千次阅读 2019-04-01 19:44:48
    这里写自定义目录标题欢迎使用Markdown编辑器新改变功能快捷键合理创建标题,有助于目录生成如何改变文本样式插入链接与图片如何插入一段漂亮代码片生成一个适合你列表创建一个表格设定内容居中、居左、...
  • 实现CLI需要有清屏功能,在概要设计时候本以为通过Java调用本地clear命令可以实现,但貌似没戏。网上方法大致有两种,
  • JAVA 控制台清屏 2

    万次阅读 2011-06-09 23:12:00
    最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在网上搜了...但这种是建立子线程,不能控制当前屏幕的清屏,2.就更搞笑了,System.out.println(
  • 今天打算从头学习java,之前图快忽略了很多细节。现在才发现欲速则不达,指过于性急图快,反而不能达到目的。...拜见java祖师爷今天学习内容计算机二进制和十进制转换常用DOS命令环境变量配置He...
  • 在程序运行之前先判断输入参数个数是否合法。如果不合法,则提醒用户程序执行不,并退出程序。...如果信息正确则显示“欢迎雷柔光临...”,否则显示“错误用户名及密码”*/import java.util.Scanner;public class...
  • /**控制台清屏 * @throws IOException * @throws InterruptedException */ public void clearScreen() throws IOException, InterruptedException { // 新建一个 ProcessBuilder,其要执行命令是 cmd.exe...
  • java中没有提供清屏的接口,所有可以通过jni调用c语言的system(“cls”)... 编写java的清屏native接口。public classClear {static{System.loadLibrary("clear");//加载clear.dll动态库}public native static v...
  • java中没有提供清屏的接口,所有可以通过jni调用c语言的system(“cls”)... 编写java的清屏native接口。public classClear {static{System.loadLibrary("clear");//加载clear.dll动态库}public native static v...
  • System.out.println("\033[47;31mhello world\033[5m");...47是字背景颜色, 31是字体颜色, hello world是字符串. 后面\033[5m是控制码. 颜色代码: QUOTE: 字背景颜色范围: 40--49 字颜色: 30--39 40: 黑 ...
  • java中没有提供清屏的接口,所有可以通过jni调用c语言的system(“cls”)清屏。当然,仅限于cmd清屏,...1. 编写java的清屏native接口。 public class Clear { static{ System.loadLibrary("clear");/...
  • 标签:因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面操作系统情况,可以通过JNI(Java Native Interface)技术实现java后台调用C++/Cdll(Dynamic Linkable Library,动态链接库)文件。...
  • 因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面操作系统情况, 可以通过JNI(Java Native Interface)技术实现java后台调用C++/Cdll(Dynamic Linkable Library,动态链接库)文件。 ...
  • c++清屏函数是“system("cls")”。system()是一个C/C++函数,功能是发出一个DOS命令;当该函数参数为“cls”时...c++清屏函数是“system("cls")”,执行控制台命令cls,功能是清屏,清除所有屏幕显示信息。syste...
  • 3.调用win32 api ,进行控制台清屏 和 彩色文本输出。   Game Over   Java无所不能,控制台运行了这个贪吃蛇 复杂地方主要是键盘事件,开始想直接用java调API...
  • @[TOC]dos控制台的基本快捷键和Java简述 关于dao的基本应运 为什么要用dos 首先我们要了解人机交互: 有两种方式: 第一种是图形界面化,就是我们平常使用电脑的方式 第二种是:命令方式 步骤1:需要有dos控制台 ...
  • 这他妈怎么行,于是开始在百度找清屏的方法,找来找去,似乎唯一可行只有一个需要用vc方法, 本着革命小将不接受外来文化污染原则,我放弃这个方法,采用了一个最笨方法,那就是 System.out.println...
  • Java基础常见dos命令:盘: :进入指定根目录。dir :列出当前控制台所在路径下所有文件以及文件夹。cd 路径 :进入到指定路径下。cd / :返回当前路径下根目录。cd ....文章lambdaλ2017-09-16500浏览...
  • Z的Java之旅 2

    2020-09-03 06:06:19
    DOS是windows的控制台 开启DOS windows键 + r 输入cmd 回车 指令 cls ——清屏 D:——切换盘符 (切换到D盘) cd 目录——进入指定文件夹 cd…——返回到上一级目录 cd\——返回盘符根目录 Java编程环境 JVM—...
  • java

    2020-07-19 09:31:29
    控制台中输入相应dos命令 cd …/…/…/回退多级目录(回退几级就几个斜杠) cd /回退根目录 cls清屏 cd /d 完整路径 切盘符操作 创建目录(文件夹) md 目录名 删除目录 rd 目录名 (只能删除空目录) 删除非空...
  • 打开控制台:win+R,然后cmd回车 d: 回车:是盘符切换,在c盘进去d盘。 dir 回车 :列出当前目录下文件以及文件夹。 cd 目录名称:进入某一个子目录。...刚开始学习java基础,总结一下学习小知识点。 ...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

java控制台的清屏

java 订阅