java - 如何在 JTextArea 中格式化文本

标签 java swing jframe jtextarea

我正在尝试输出多行文本来创建 ASCII 艺术。但是当我使用 JFrame 和 JTextArea 时,它没有正确排列。我正在尝试打印出 Merry Christmas in ASCII art但是当我在新窗口中打印出来时 The characters do not line up to form the words这是我目前的代码(ASCII 艺术中会有一些无用的字符):

public class LanguageChristmas  {


    public static void main(String args[]) {
        UIManager.put("swing.boldMetal", Boolean.FALSE);
        JFrame f = new JFrame("Merry Christmas");
        f.addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        JTextArea text = new JTextArea(100,50);
         {
            text.append("   _____                               _________ .__          .__          __                                           "+ "\n");
            text.append("  /     \\   __________________ ___.__. \\_   ___ \\|  |_________|__| _______/  |_  _____ _____    ______   /     \\ " + "\n");
            text.append(" /  \\ /  \\_/ __ \\_  __ \\_  __ <   |  | /    \\  \\/|  |  \\_  __ \\  |/  ___/\\   __\\/     \\\\__  \\  /  ___/  /  \\ / " + "\n");
            text.append("/    Y    \\  ___/|  | \\/|  | \\/\\___  | \\     \\___|   Y  \\  | \\/  |\\___ \\  |  | |  Y Y  \\/ __ \\_\\___ \\  /    Y    " + "\n");
            text.append("\\____|__  /\\___  >__|   |__|   / ____|  \\______  /___|  /__|  |__/____  > |__| |__|_|  (____  /____  > " + "\n");
            text.append("        \\/     \\/              \\/              \\/     \\/              \\/             \\/     \\/     \\/           " + "\n");

        }
        JScrollPane pane = new JScrollPane(text);
        pane.setPreferredSize(new Dimension(500,400));
        f.add("Center", pane);
               f.pack();
        f.setVisible(true);
    }
}`

我四处寻找,没有找到解决这个问题的办法。任何帮助都是有用的。

最佳答案

问题是,默认情况下,文本区域使用可变宽度字体。将字体更改为等宽字体将解决问题,例如

   text.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));

关于java - 如何在 JTextArea 中格式化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47958726/

相关文章:

启动位置服务时出现java.lang.SecurityException

java - Repaint() 不在 Java 中调用 paint()

java - 我可以使用 ObjectChangeListener 来监听任何对象的变化吗?

swing - 如何在 jFrame 上创建带有关闭按钮的自定义标题栏?

java - 多帧/用户输入(可见性)

java - 如何在 parent 身上停止 JProgressBar?

java - 通过 ajax 提交在 ListView 中添加新项目

java - 如何将IntelliJ IDEA 2017.1.2连接到Postgresql

java - 需要在 Mac OS X 上安装 Java 8 的帮助

mysql - 如何解决 MySQLSyntaxErrorException