首页 > 解决方案 > 如何在没有 JFrame 的控制台上输入图形?

问题描述

我使用codiva在 chromebook 上进行编码。我只是想知道是否可以在控制台输出中创建图形。例如,我现在的文本是普通文本(它在控制台中以纯文本形式打印)。如果我只能使用控制台进行输出(没有画布、Jframe、弹出窗口等),有没有办法加粗强调甚至更改文本的颜色?

我试过“\u001B[1m(粗体文本)”,我得到的只是(见输出)。斜体也一样。

输出:

标签: javagraphicsconsole

解决方案


控制序列的解释是特定控制台的主题,似乎 codiva.io 的控制台不解释任何控制序列。

但是,由于它显示在浏览器中并且浏览器通常具有广泛的 Unicode 支持,因此您可以使用特殊代码点实现有限的格式设置。例如

class HelloCodiva {
    public static void main(String[] args) {
        System.out.println("Formatted: "
            + bold("bold") + " " + italic("italic") + " " + bold(italic("both")));
    }

    static CharSequence bold(CharSequence cs) {
        return trans(cs, 0x1D400, 0x1D41A);
    }

    static CharSequence italic(CharSequence cs) {
        return trans(cs, 0x1D434, 0x1D44e);
    }

    static CharSequence trans(CharSequence cs, int upper, int lower) {
        return cs.codePoints()
            .map(cp -> cp >= 'A' && cp <= 'Z'? cp + upper - 'A':
                       cp >= 'a' && cp <= 'z'? cp + lower - 'a':
                       cp >= 0x1D400 && cp <= 0x1D433? cp + 104:
                       cp >= 0x1D434 && cp <= 0x1D467? cp + 52:
                       cp)
            .collect(StringBuilder::new,
                     StringBuilder::appendCodePoint, StringBuilder::append);
    }
}

印刷

Formatted:   

在 codiva.io 的控制台中。

限制是它只适用于字母。但是为了突出重要的词,这可能就足够了。


推荐阅读