1

私のプログラムは単純なゲームで、単語を推測し、同じ文字がいくつあるかを教えてもらうことで、ランダムな 5 文字の単語を見つけようとします (Jotto のスピンオフ)。以前の推測と結果が JScrollPane に表示されます。それらを列に並べようとしています。推測数が 2 桁になると、すべてが 1 文字シフトします。

ここに画像の説明を入力

等幅フォントと String.format() を使用して、列間に適切な数のスペースを埋めようとしていますが、スペースを他の文字よりも小さくしているようです。コマンド ラインに出力すると正常に動作し、フィールド幅は実際には 10 文字ではなく 17 文字になり、画像には多くの文字が表示されます。

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

ここで、guessList は JScrollPane にある JList です。それが問題を引き起こしているとは思いませんが、それはその一部です。

JTable への切り替えを検討していますが、これでうまくいくと思います。うまくいかない場合は、その理由を知りたいです。

4

2 に答える 2

1

HTMLでJTextPaneを使用します。

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>");
于 2012-08-02T21:27:25.640 に答える
1

あまりコードを見ないで、JScrollPane(scrollコードで名前が付けられた) にJListフォントを設定していると仮定していguessListます。代わりにこれを使用してみてください:

guessList.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
于 2012-08-02T21:16:53.593 に答える