我正在使用JTextPane并希望对齐我从StringBuffer收到的文本结果。运行结果的线程返回一个包含所有请求结果的String,稍后,在另一个线程中,我将数据放在JTextPane中。
获取结果的代码(String)如下所示:
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中完成。
由于
下面的是所需结果的屏幕截图。
答案 0 :(得分: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());
答案 1 :(得分: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);