【问题标题】:Java Console Scanner ColorJava 控制台扫描仪颜色
【发布时间】:2017-07-12 16:59:25
【问题描述】:

假设我有一个 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”,它会显示为红色。当我按下回车键时,它会以默认的白色打印“hello world”。

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

谢谢!

【问题讨论】:

标签: java terminal console


【解决方案1】:

你需要做这样的事情:

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);
        

    }
}

【讨论】:

    【解决方案2】:

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

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

    使用此代码启动您的 Java 应用程序并设置控制台的字体颜色/背景颜色。

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

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

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

    由于我没有测试这个解决方案,我不知道你用谢尔盖的方法改变颜色后会不会丢失!你必须尝试一下。

    一些旁注:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 2011-06-18
      • 2017-10-25
      • 1970-01-01
      相关资源
      最近更新 更多