精华内容
下载资源
问答
  • 最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在网上搜了很久也没找到成功的解决方案,所有的方案都是带有喜剧性的,1.Runtime.getRuntime()...

    最近写了个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如何实现对控制台清屏,看到的内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧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】Eclipse控制台清屏方法最近在跟着教学课程学习Java语言,老师之前是做职业程序猿的。最近布置了一个简单的课后作业,就是在控制台去模仿ATM机的界面,并实现一些基本的业务逻辑。在控制台用System.out....

    【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实现控制台清屏效果

    千次阅读 2019-04-01 19:44:48
    JAVA实现控制台清屏效果,使用ProcessBuilder类。 /** * 该方法只在CMD窗口下有效 * @author HYQ95612 * */ public class ControlWindowsConsole { // 参数一 "/k"保留窗口"/c"关闭窗口 // 参数二 "cls"或者...

    JAVA实现控制台清屏效果,使用ProcessBuilder类。

    /**
     * 该方法只在CMD窗口下有效
     * @author HYQ95612
     *
     */
    public class ControlWindowsConsole {
    	// 参数一 "/k"保留窗口"/c"关闭窗口
    	// 参数二 "cls"或者其他命令
    	public static void console(String state, String con) {
    		try {
    			new ProcessBuilder("cmd", state, con).inheritIO().start().waitFor();
    		} catch (Exception exception) {
    			System.out.println("出错了!");
    		}
    	}
    }
    
    展开全文
  • JAVA 控制台清屏

    千次阅读 2011-06-09 23:11:00
    看到网上有人讨论Java如何实现对控制台清屏,看到的内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧import static java.lang.System.out;/** * Build by netbeans * @author Felix Wu */public ...
  • Java控制台清屏

    万次阅读 2010-06-12 12:20:00
    看到网上有人讨论Java如何实现对控制台清屏,看到的内容不是很理想。所以把这些内容总结一下。直观一点,先看下代码吧import static java.lang.System.out; /**  * Build by netbeans  * @author Felix Wu  *...
  • 因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面的操作系统的情况,可以通过JNI(Java Native Interface)技术实现java后台调用C++/C的dll(Dynamic Linkable Library,动态链接库)文件。...
  • 控制台清屏转载自 https://blog.csdn.net/qq_18144681/article/details/51222405 按任意键返回主菜单 System.in.read(); 清屏 public static void clear() throws AWTException { Robot r = new Robot(); ...
  • 然而在设计显示棋盘的时候,我震惊地发现使用Windows下Java实现控制台清屏还真的没什么办法。为了更新棋盘,当然要频繁清空控制台的显示。控制台作为显示本来就够low了,要是再没点要求,那也太混了。 ​ 网上查找了...
  • JAVA 控制台清屏 2

    万次阅读 2011-06-09 23:12:00
    最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在网上搜了很久也没找到成功的解决方案,所有的方案都是带有喜剧性的,1.Runtime.getRuntime()...
  • 当然,仅限于cmd清屏,不支持eclipse的控制台console清屏。步骤:1. 编写java清屏native接口。public classClear {static{System.loadLibrary("clear");//加载clear.dll动态库}public native static v...
  • java实现控制台打印进度条,清屏

    千次阅读 2019-06-12 15:43:35
    package com.example.print; /* .......................阿弥陀佛...................... . _oo0oo_ . . o8888888o . . ...
  • c++清屏函数是“system("cls")”。system()是一个C/C++的函数,功能是发出一个DOS命令;当该函数的参数为“cls”时...c++清屏函数是“system("cls")”,执行控制台命令cls,功能是清屏,清除所有屏幕显示信息。syste...
  • java控制台清屏

    万次阅读 2008-09-04 12:25:00
    最近写了个java的定时器程序,因为在C/C++中有system("cls")可以进行清屏,然而在java中却从来没发现过相关功能的方法,在网上搜了很久也没找到成功的解决方案,所有的方案都是带有喜剧性的,1.Runtime.getRuntime()...
  • 实现的CLI需要有清屏功能,在概要设计的时候本以为通过Java调用本地的clear命令可以实现,但貌似没戏。网上的方法大致有两种,
  • 今天打算从头学习java,之前图快忽略了很多细节。现在才发现欲速则不达,指过于性急图快,反而不能达到目的。出自《论语·子路》:“无欲速,无见小利。欲速则不达,见小利则大事不成。”很多内容没有用代码进行实现...
  • 在程序运行之前先判断输入的参数个数是否合法。如果不合法,则提醒用户的程序执行不,并退出程序。...如果信息正确则显示“欢迎雷柔光临...”,否则显示“错误的用户名及密码”*/import java.util.Scanner;public class...
  • 标签:因为java的最底层是jvm,所以单纯的控制台java程序不能感知jvm再下面的操作系统的情况,可以通过JNI(Java Native Interface)技术实现java后台调用C++/C的dll(Dynamic Linkable Library,动态链接库)文件。...
  • C++中控制台可以用system("cls"),但是java中有没对应的函数呢?
  • 最近写写代码是遇到一个问题是关于在控制台如何实现清屏操作? 有写过在控制台实现清屏功能的高手吗?求教???
  • /**控制台清屏 * @throws IOException * @throws InterruptedException */ public void clearScreen() throws IOException, InterruptedException { // 新建一个 ProcessBuilder,其要执行的命令是 cmd.exe...
  • 当然,仅限于cmd清屏,不支持eclipse的控制台console清屏。步骤:1. 编写java清屏native接口。public classClear {static{System.loadLibrary("clear");//加载clear.dll动态库}public native static v...
  •  \033[2J 清屏   \033[K 清除从光标到行尾的内容   \033[s 保存光标位置   \033[u 恢复光标位置   \033[?25l 隐藏光标   \33[?25h 显示光标   文章装载: ...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

java清屏控制台

java 订阅