2012-09-17 35 views
1

我習慣於使用printf,但是我的研究讓我相信我可以使用String.Format來設置JTextArea中的表格,並且它本質上是一樣的。這是一個節奏遊戲應用程序。我的代碼是:由於某種原因,String.Format錯位可怕

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

對於數組中的每個組件,analyze.toString返回顯示的字符串。我的格式字符串是相同的SANS的一切是在表頭弦,最一切都是整數,所以我不知道爲什麼我的表找出來是這樣的:

enter image description here

+1

你使用什麼字體?您需要使用固定字體進行這種對齊。 – Alex

+0

它可能不是你的全部問題,但從圖像看,它看起來像你正在使用比例字體。如果你想讓事情排隊,你將不得不使用固定寬度的字體。 – GreyBeardedGeek

+1

不想聽起來像船長明顯,但你爲什麼不使用JTable? –

回答

4

就像在註釋中規定你應該使用fixed-width font (or monospaced font)來使這樣的路線起作用。

JTextArea area = new JTextArea(); 
area.setFont(new Font("Monospaced", Font.PLAIN, 12)); 

或者如上所述,Denis Tulskiy直接使用JTable組件。