通過JNI調(diào)用一個(gè)庫文件(.dll),這個(gè)dll中包含一個(gè)實(shí)現(xiàn)清屏功能(system(“cls”))的導(dǎo)出函數(shù)。在java程序中加入代碼調(diào)用這個(gè)庫,即可實(shí)現(xiàn)當(dāng)前屏幕的清屏。(--JNI的使用,以及dll的制作在百度隨便搜索即可找到,這里請恕不多談^_^--)
成都創(chuàng)新互聯(lián)公司基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺為眾多戶提供四川聯(lián)通機(jī)房服務(wù)器托管 四川大帶寬租用 成都機(jī)柜租用 成都服務(wù)器租用。
實(shí)現(xiàn)步驟:
1.寫一個(gè)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.再寫一個(gè)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++建立一個(gè)dll工程(我的工程名為clsTest)
導(dǎo)入dllmain.c 和dll.h以及jdk下include目錄下的jni.h和include/win32下的jni_md.h 共四個(gè)文件
然后build 這個(gè)dll工程,將生成的clsTest.dll放入到你的java.library.path中的其中一個(gè)目錄下
查看java.libray.path用代碼System.out.print(System.setProperty("java.library.path","."));
我是根據(jù)我的配置將clsTest.dll放到C:/Program Files/Java/jdk1.6.0/jre/bin下
4.測試
新建一個(gè)測試類Test.java
public class Test{
public native void clear();//左方的native是通知Java這個(gè)函數(shù)會(huì)使用到外部函數(shù)
static {
System.loadLibrary("clsTest"); //左方的代碼代表我要載入clsTest.dll的動(dòng)態(tài)鏈接
}
public static void main(String[] args) {
final Test a=new Test();
Runnable k=new Runnable(){
public void run(){
for(int i=0;i20;i++){
System.out.println(i);
try {
Thread.sleep(1000);
a.clear();
} catch (Exception e) {
}
}
}
};
k.run();//執(zhí)行線程
}
}
5.在cmd下 javac Test.java
java Test
即可看到運(yùn)行效果^_^~
注:該解決方案只解決控制臺程序的刷屏,且必須是系統(tǒng)控制臺,而eclipse等其它IDE的控制臺是無法用這種方式進(jìn)行清屏的,如果要實(shí)現(xiàn),必須使用入侵IDE的進(jìn)程,因?yàn)樵趀clipse的內(nèi)置控制臺右擊郵件有個(gè)clear功能,實(shí)際上就是個(gè)setText(null)事件,入侵IDE就是要在外部制造這個(gè)事件,其它IDE要也差不多。
同樣,java的這種刷屏解決方案也適用于linux,不同是其鏈接庫文件是.so,總之原理是差不多的。
Java可以通過代碼來對console控制臺進(jìn)行清屏:Runtime.getInstance().exec("cls");
也可以通過右鍵點(diǎn)擊console,出現(xiàn)clear,點(diǎn)擊就可以清屏。
要java在windows下的cmd下實(shí)現(xiàn)清屏,唯一的方案,就是通過JNI調(diào)用一個(gè)庫文件(.dll),這個(gè)dll中包含一個(gè)實(shí)現(xiàn)清屏功能(system(“cls”))的導(dǎo)出函數(shù)。
在java程序中加入代碼調(diào)用這個(gè)庫,即可實(shí)現(xiàn)當(dāng)前屏幕的清屏。
實(shí)現(xiàn)步驟:
1.寫一個(gè)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.再寫一個(gè)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++建立一個(gè)dll工程(我的工程名為clsTest)
導(dǎo)入dllmain.c 和dll.h以及jdk下include目錄下的jni.h和include/win32下的jni_md.h 共四個(gè)文件
然后build 這個(gè)dll工程,將生成的clsTest.dll放入到你的java.library.path中的其中一個(gè)目錄下
查看java.libray.path用代碼System.out.print(System.setProperty("java.library.path","."));
我是根據(jù)我的配置將clsTest.dll放到C:/Program Files/Java/jdk1.6.0/jre/bin下
4.測試
新建一個(gè)測試類Test.java
public class Test{
public native void clear();//左方的native是通知Java這個(gè)函數(shù)會(huì)使用到外部函數(shù)
static {
System.loadLibrary("clsTest"); //左方的代碼代表我要載入clsTest.dll的動(dòng)態(tài)鏈接
}
public static void main(String[] args) {
final Test a=new Test();
Runnable k=new Runnable(){
public void run(){
for(int i=0;i20;i++){
System.out.println(i);
try {
Thread.sleep(1000);
a.clear();
} catch (Exception e) {
}
}
}
};
k.run();//執(zhí)行線程
}
}
5.在cmd下 javac Test.java
輸出幾十行換行……
輸出適量的退格符'\b',然后重新輸出要輸出的東西,這樣可以把原來的覆蓋。如果只是要清屏,不要重新輸出,就退格后輸出適量空格' '來覆蓋原來的輸出。
在java程序中加入代碼調(diào)用這個(gè)庫,即可實(shí)現(xiàn)當(dāng)前屏幕的清屏。
實(shí)現(xiàn)步驟:
1.寫一個(gè)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.再寫一個(gè)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++建立一個(gè)dll工程(我的工程名為clsTest)
導(dǎo)入dllmain.c 和dll.h以及jdk下include目錄下的jni.h和include/win32下的jni_md.h 共四個(gè)文件
然后build 這個(gè)dll工程,將生成的clsTest.dll放入到你的java.library.path中的其中一個(gè)目錄下
查看java.libray.path用代碼System.out.print(System.setProperty("java.library.path","."));
我是根據(jù)我的配置將clsTest.dll放到C:/Program Files/Java/jdk1.6.0/jre/bin下
4.測試
新建一個(gè)測試類Test.java
public class Test{
public native void clear();//左方的native是通知Java這個(gè)函數(shù)會(huì)使用到外部函數(shù)
static {
System.loadLibrary("clsTest"); //左方的代碼代表我要載入clsTest.dll的動(dòng)態(tài)鏈接}
public static void main(String[] args) {
final Test a=new Test();
Runnable k=new Runnable(){
public void run(){
for(int i=0;i20;i++){
System.out.println(i);
try {
Thread.sleep(1000);
a.clear();
} catch (Exception e) {
}
}
}
};
k.run();//執(zhí)行線程
}
}
5.在cmd下 javac Test.java