Java控制台扫描仪颜色

时间:2017-02-22 14:58:03

标签: java terminal console

让我们说我在Java中有一个控制台应用程序,它从用户那里读取输入,然后将其打印出来(非常基本)

import 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"它会以红色显示。当我按下回车键时,它会打印" hello world"在默认的白色。

作为奖励,是否可以为" hello world"配置背景?什么时候用红色打印?这意味着我可以选择两种对比色,以防用户将控制台背景设置为默认设置为红色。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用this code启动Windows控制台:

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

使用此代码启动Java应用程序并设置控制台的fontcolor / backgroundcolor。

/c - 开关意味着您为控制台提供应运行的命令。 您可以通过单击(Windows)Start -> cmd /k color 2c进行测试...这将启动一个控制台,其中包含一些非常难看的颜色,您可以根据自己的需要进行更改:

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

然后使用Sergei的方法将Java输出的颜色更改为您想要的颜色。

由于我没有测试这个解决方案,我不知道用Sergei的方法改变它们后颜色是否会丢失!你必须尝试。

一些附注:

  • 为什么要更改输入颜色?这似乎只是为了一种奇特的效果而付出了很多努力。
  • 您可能会覆盖用户在其控制台上创建的首选项!例如,我使用绿色字体,因为我可以更好地阅读它。让程序永久地改变这种颜色(?)可能会扰乱用户。
  • 此解决方案仅适用于Windows。当用户在基于Linux的计算机上运行它时,这可能会失败。因此,您必须为不同的操作系统实现一个开关,如此处所示:https://stackoverflow.com/a/5738345/1368690

答案 1 :(得分:0)

您需要执行以下操作:

import java.util.Scanner;

public class App {

    public static final String ANSI_RESET = "\u001B[0m";
    public static final String ANSI_RED = "\u001B[31m";
    public static void main(String[] args) throws Exception {


        System.out.println("Movie Name:" + ANSI_RED);
        Scanner read = new Scanner(System.in);
        String movieName = read.nextLine();
        System.out.println(ANSI_RESET +"\nMovie Genre:" + ANSI_RED);
        

    }
}