由于某种原因,String.Format 严重错位

Mic*_*eau 2 java user-interface string.format jtextarea

我习惯于使用 printf,但我的研究使我相信我可以使用 String.Format 在 JTextArea 中设置表,并且它本质上是同一件事。这是一款节奏游戏应用程序。我的代码是:

private final String HEADER = "%-10s%-15s%-90s%-9s%-6s%-9s%-7s%-6s%-9s";
...
ranks.setText("");
ranks.append(String.format(HEADER + "\n", "Rank", "Difficulty", "Song Name",     "Perfects", "Goods", "Averages", "Misses", "Boos", "MaxCombo"));
ranks.append(analyze.toString());
...
return String.format("%-10d%-15d%-90s%-9d%-6d%-9d%-7d%-6d%-9d\n ", rank, difficulty,   songName, perfects, goods, averages, misses, boos, maxCombo);
Run Code Online (Sandbox Code Playgroud)

对于数组中的每个组件,analyze.toString 返回显示的字符串。我的格式字符串是相同的,标题中的所有内容都是字符串,表中的大多数内容都是整数,所以我不知道为什么我的表看起来像这样:

在此输入图像描述

Ale*_*lex 5

正如评论中所述,您应该使用固定宽度字体(或等宽字体)才能使此类对齐工作。

JTextArea area = new JTextArea();
area.setFont(new Font("Monospaced", Font.PLAIN, 12));
Run Code Online (Sandbox Code Playgroud)

或者如 Denis Tulskiy 所说,直接使用 JTable 组件。