Mic*_*ian 6 java printing swing jtextpane
我先来描述下图:

我希望绿线突出显示的所有字符都打印在一列中.
String的字体是monospaced Courier New.但是,似乎空格字符不会打印为等宽字体(请参阅"虚线"线与开头的空格字符行).
要打印字符串,我在JTextPane组件上使用标准Java Print Service API:
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(myTextPane);
pj.print();
Run Code Online (Sandbox Code Playgroud)
据我所知,Java Print Service API实际上调用了myTextPane的paint()方法.因此,预览应与String的打印版本完全相同.
但事实并非如此.预览似乎没有误解等宽空间字符(参见最后一张图).预览看起来与我想要打印的文本完全相同.

有关如何强制JavaPrintServiceAPI正确打印等宽字符空间字符的任何建议吗?
我认为您无法在打印 API 中修复此问题。
\n\n首先将“绿色”数字后面的每一行划分为左子串和(可能为空)右子串。
\n\n在您的 中JTextArea,使用align来调整两列 HTML 表格,如如何在 Swing 组件中使用 HTML 中所述。
作为替代方案JTextPane,请使用 a GridLayoutof JLabel。给出左列RIGHT_ALIGNMENT和右列LEFT_ALIGNMENT。
JTable用于渲染的两列JLabel可能是第三种选择。有关详细信息,请参阅如何使用 Tables\xe2\x80\x94Concepts:编辑器和渲染器。