2012-04-20 100 views
26

私はこれのためにかなり長い時間のために私の髪を引っ張ってきました。私はJavaでコンソールをクリアする方法について1時間研究しました。Javaでコンソールをクリアする方法は?

私が見つけたすべての行の束を印刷するか、この

Runtime.getruntime.exec("cls/clear"); 

を実行することによって、いずれかのハッキング汚れていたしかし、何も私のために働いているように見えるん。実際にC言語(clrscr();)のようにJavaでコンソールをクリアする方法はありませんか?これを達成するための外部ライブラリはありませんか?

汚れたハッキン​​グではなく、適切な関数、ライブラリなどを使用する前に誰かがこれを行ったことがある場合は教えてください。

+1

'like C'?私はC言語でそれを行う唯一の方法は、ncursesのようなライブラリを使うことだと思います。それがあなたの後ろにあるなら、この質問はJavaで似たような結果を得る方法を説明しています:http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal - 適用。 – Hassan

+0

VT100端末をお持ちの場合は、エスケープコードを使用することもできます(Esc [2J \t画面全体を消去\t ED2)http://ascii-table.com/ansi-escape-sequences-vt-100.phpを参照してください。他のエスケープコードである可能性があります。 Eclipseコンソールは、エスケープコードを除いてはありません。 – Andreas

+3

同様の質問:** [Java:コンソールをクリア](** http://stackoverflow.com/questions/2979383/java-clear-the-console ** –

答えて

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

"PlatformDependentCode"をプラットフォームのclear consoleコマンドに置き換える必要があります。

exec()メソッドは、コンソールに入力されたかのように、引数として入力したコマンドを実行します。

Windowsでは、Runtime.getRuntime().exec("cls");と記述します。

+10

'Runtime.getRuntime()。exec(" cls ") ; 'はウィンドウ上で(常に)動作しません。 – Lion

0

コンソールから消去するように指示する必要があります。

シリアル端末の場合、これは通常、いわゆる「エスケープシーケンス」によって行われました。特に、vt100セットが非常に一般的にサポートされています(およびANSI準拠の近く)。

Windowsは伝統的にこのようなシーケンスをサポートしていませんが、これらの処理を行うAPI呼び出しに依存しています。ただし、WindowsのDOSベースのバージョンでは、このようなサポートを提供するためにANSI.SYSドライバをインストールすることができます。

Windowsの場合は、適切なWindows APIと対話する必要があります。私は標準のJavaランタイムライブラリにはそうするコードが含まれているとは思わない。お使いの端末がANSI escape codesをサポートしている場合

16

が、これは画面をクリアし、最初の列、最初の行にカーソルを移動します。これは、ほぼすべてのUNIX端末と端末エミュレータの上の作品

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

。 Windows cmd.exeは、ANSIエスケープコードを解釈しません。

+0

ubuntuのEclipseコンソールでは機能しません – sziraqui

+0

EclipseコンソールはANSIエスケープコードをサポートしていないためです。 – IMustBeSomeone

1

簡単なループ印刷 "\ b"を使用してclrscr()を簡単に実装できます。

5

は、Javaプロセスがコンソールに接続されている場合は、コンソールをクリアしますさて、このコード

import java.io.IOException; 

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

を試してみてください。

-1

ウィンドウを使用していて、プログラムを実行する前に画面をクリアしたい場合は、ファイルを.batファイルからコンパイルすることができます。例えば :


CLS

Javaは "など" の.batとして "今まで何をコンパイルクラスの名前は"


保存し、その後でそれを呼び出すことによって実行されていますコマンドプロンプトまたはファイルをダブルクリック

+1

あなたのアプローチが使用されている場合は、プログラムを起動する前にすべてクリアされますが、Javaプログラムが実行されているときに実行時にscreenをクリアすることに関する問題です。 –

1

次のコードを使用します。

' F \ '
System.out.println("\f"); 

を改ページを表しエスケープシーケンスです。これは私のプロジェクトでコンソールをクリアするために使用したものです。これは他のコードより簡単です。

関連する問題