2012-08-02 41 views
1

我的程序是一個簡單的遊戲,您可以通過猜測單詞並告訴多少個字母相同(從Jotto旋轉)來試圖找出一個隨機的5個字母的單詞。以前的猜測和結果顯示在JScrollPane中。我試圖讓他們排成一列。當猜測數字變成兩位數字時,所有事情都會改變一個字符。將文本插入JScrollPane中的列

enter image description here

我使用的是單空間字體和的String.format()來嘗試和墊柱之間的正確數量的空格,但它似乎是使比其他字符更小的空間。當打印到命令行時,它可以正常工作,並且其中的字段寬度實際上是17個字符,而不是10個,或者圖片中有很多。

scroll.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12)); 
.... 
guessList.add(0, String.format("%-17s" + result, numGuesses + ":")); 

這裏guessList是JScrollPane中的JList。我不認爲這可能會導致問題,但它是其中的一部分。

我正在考慮切換到JTable,但我認爲這應該工作,如果不是,我想知道爲什麼。

+1

什麼用的JTable是怎麼回事? – MadProgrammer 2012-08-02 21:05:58

回答

1

沒有看到太多的代碼,我假設你設置上的字體JScrollPane(在你的代碼名爲scroll),不會對涓滴您JList(在你的代碼名爲guessList)。嘗試使用這個:

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

使用的JTextPane用HTML:

JTextPane jtp = new JTextPane(); 
jtp.setContentType("text/html"); 

,並在每次插入,重新繪製整個表:

jtp.setText(""); 
jtp.append("<html><table>"); 
jtp.append("<tr><td>header1</td><td>header2</td><td>header3</td><td>header4</td></tr>"); 
for(String line : lines) 
    jtp.append("<tr><td> field1 </td><td> field2 </td><td> field3 </td><td> field4 </td></tr>"); 
jtp.append("</table></html>");