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 回答