0

JTextPaneを使用していて、StringBufferから受け取ったテキスト結果を整列させたいと思っています。結果を実行するスレッドは、要求されたすべての結果を含む文字列を返します。その後、別のスレッドで、データをJTextPaneに配置します。

結果(文字列)を取得するコードは次のようになります。

    info.append("\n\nResult:\n");

    for (TResult result : results)
        info.append(result.getID());

    info.append("\n");

    for (TResult result : results)
        info.append(result.getApprovalDateStr+"              "); //the space is used for the alignment 

    info.append("\n");

    for (TResult result : results)
        info.append(result.getState+","+result.getCity()+"                 ");

明らかに、州/都市の長さに応じて、画面上の結果に一貫性がありません。きちんと揃えるために何を使うべきかを誰かが指摘できますか?これは、StringBufferを使用するか、後でJTextPaneで実行できます。

ありがとう

以下は、望ましい結果のスクリーンショットです。

ここに画像の説明を入力してください

4

2 に答える 2

3

電話

textPane.setContentType("text/html");

htmlテーブルを使用します。

info.append("<html><table>");

for (TResult result : results)
    info.append("<tr><td>"+result.getID()+"</td><td>"+result.getApprovalDateStr+"</td><td>"+result.getState+","+result.getCity()+"</td></tr>");

info.append("</table></html>");

//then
textPane.setText(info.toString());
于 2012-04-16T18:03:08.570 に答える
1

ヘルパー関数を定義します。

private void log(StringBuilder buffer, String data, int numberOfSpaces) {
    buffer.append(String.format("%" + numberOfSpaces + "s", data));
}

それで:

for (TResult result : results)
    log(info, result.getID(), 30);

info.append("\n");

for (TResult result : results)
    log(info, result.getApprovalDateStr, 30);

info.append("\n");

for (TResult result : results)
    log(info, result.getState+","+result.getCity(), 30);
于 2012-04-16T17:02:06.883 に答える