2017-12-24 31 views
2

ASCIIアートを作成するために、複数行のテキストを出力しようとしています。しかし、JFrameとJTextAreaを使用すると、正しく整列しません。私はMerry Christmas in ASCII artをプリントアウトしようとしています。しかし、私は新しいウィンドウでそれをプリントアウトするときThe characters do not line up to form the wordsこれが私の現在のコードです(役に立たないアスキーアートで一部の文字があります):私の周りで検索しましたJTextAreaでテキストを書式設定する方法

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

とこの問題に対する解決策は見つかっていません。どんな助けも便利です。

答えて

1

デフォルトでは、テキスト領域は可変幅フォントを使用するという問題があります。等幅フォントにフォントを変更すると、問題が解決されます。

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

@AndrewThompson thanks、edited – ThomasEdwin

関連する問題