Java 在JScrollPane中将文本排列成列

Java 在JScrollPane中将文本排列成列,java,swing,jscrollpane,text-alignment,Java,Swing,Jscrollpane,Text Alignment,我的程序是一个简单的游戏,你试图通过猜测单词并被告知有多少个字母是相同的(Jotto的衍生产品)来找出一个随机的5个字母的单词。先前的猜测和结果显示在JScrollPane中。我试图让他们排成纵队。当猜数变为两位数时,所有字符都会移位 我正在使用单空格字体和String.format()尝试在列之间填充正确的数字空格,但这似乎使空格仍然比其他字符小。当打印到命令行时,它工作正常,在那里,字段宽度实际上是17个字符长,而不是10个字符或图片中的任何字符 scroll.setFont(new Fo

我的程序是一个简单的游戏,你试图通过猜测单词并被告知有多少个字母是相同的(Jotto的衍生产品)来找出一个随机的5个字母的单词。先前的猜测和结果显示在JScrollPane中。我试图让他们排成纵队。当猜数变为两位数时,所有字符都会移位

我正在使用单空格字体和String.format()尝试在列之间填充正确的数字空格,但这似乎使空格仍然比其他字符小。当打印到命令行时,它工作正常,在那里,字段宽度实际上是17个字符长,而不是10个字符或图片中的任何字符

scroll.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
....
guessList.add(0, String.format("%-17s" + result, numGuesses + ":" ));
这里的猜测列表是JScrollPane中的JList。我不认为这可能是造成问题的原因,但这是问题的一部分


我正在考虑切换到JTable,但我认为这应该行得通,如果不行,我想知道原因。

在没有看到太多代码的情况下,我假设您正在设置
JScrollPane
(代码中名为
scroll
)上的字体,而该字体不会流到
JList
(代码中名为
猜测列表
)。请尝试使用此选项:

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

将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>");
jtp.setText(“”);
jtp.追加(“”);
jtp.追加(“header1header2header3header4”);
用于(字符串行:行)
jtp.append(“字段1字段2字段3字段4”);
jtp.追加(“”);