2017-02-22 6 views
0

Javaコンソールスキャナの色

のは、私は、ユーザからの入力を読み取り、それから出て戻ってそれを印刷し、Javaのコンソールアプリケーションは、(非常に基本的な)持っていると言うのインポートjava.util.Scanner;

public class Main { 
    public static void main(String[] args) { 
     while(true) { 
      Scanner scanner = new Scanner(System.in); 
      String message = scanner.nextLine(); 
      System.out.println(message); 
     } 
    } 
} 

System.out.printlnでプリントアウトされたテキストと比較すると、別の色を入力するときにユーザーが入力したテキストを作成することが可能ですか?

たとえば、黒い背景にデフォルトで白いテキストが表示されるコンソールでそのプログラムを実行すると、次のようなことが起こります。

「hello world」と入力すると、赤色で表示されます。私はenterを押すと、デフォルトの白で "hello world"を表示します。

赤い印字時に「こんにちはワールド」の背景を設定することは可能ですか?つまり、ユーザーがコンソールの背景を赤色のデフォルト設定にしている場合、2つの対照的な色を選択できます。

ありがとうございます!

+0

ここでいくつかの答えを見つけることができます:http://stackoverflow.com/questions/1448858/how-to-color-system-out -println-output –

+0

出力は変更されますが、入力は変更されません。 @SergeiStepanenko – Shiv

答えて

0

あなたがthis codeを使用して、Windowsコンソールを起動することができます。

Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe"); 
p.waitFor(); 

使用このコードをあなたのJavaアプリケーションを起動し、コンソールのFONTCOLOR /背景色を設定します。

- /cスイッチは、コンソールに実行するコマンドを与えることを意味します。 あなたは(Windowsの場合)Start -> cmd /k color 2cをクリックすることで、これをテストすることができます...これは、あなたのニーズに合わせて変更することができますいくつかの非常に醜い色でコンソールを起動します:

https://ss64.com/nt/color.html

次に変更するためにセルゲイのメソッドを使用しますあなたが望むものにJava出力の色を変換します。

私はこのソリューションをテストしていないので、セルゲイの方法で色を変更した後に色が失われるかどうかは分かりません。あなたはそれを試さなければなりません。

いくつかのサイドノート:

  • なぜあなたは、入力色を変更したいですか?これは派手な効果のためだけに多くの努力をしているようです。
  • ユーザーがコンソールで行った設定を上書きすることがあります。たとえば、私はそれをよりよく読むことができるので、私は緑色のフォントを使用します。この色を永久に(?)変更すると、ユーザーが動揺する可能性があります。
  • この解決策は、ウィンドウでのみ機能します。ユーザーがLinuxベースのマシンでそれを実行すると、これは失敗する可能性があります。したがって、ここに示すように異なるOS用のスイッチを実装する必要があります:https://stackoverflow.com/a/5738345/1368690