首先让我描述下图:
我希望绿线突出显示的所有字符都打印在一列中。
String的字体是等宽的Courier New。但是,似乎空格字符不会打印为等宽字体(请参阅“虚线”线与开头的空格字符行。)
要打印字符串,我在JTextPane组件上使用标准Java Print Service API:
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(myTextPane);
pj.print();
据我所知,Java Print Service API实际上调用了myTextPane的paint()方法。 因此,预览应该与String的打印版本完全相同。
然而,它没有。预览似乎没有误解等宽空间字符(参见最后一张图)。预览看起来与我希望打印的文本完全相同。
有关如何强制JavaPrintServiceAPI正确打印等宽字符空间字符的任何建议吗?
答案 0 :(得分:1)
我认为您无法在打印API中解决此问题。
首先将“绿色”数字后面的每一行划分为左和(可能为空)右子串。
在JTextArea
中,使用align
来证明两列HTML表的合理性,如How to Use HTML in Swing Components中所述。
作为JTextPane
的替代方案,请使用GridLayout
JLabel
。给左列RIGHT_ALIGNMENT
和右列LEFT_ALIGNMENT
。
使用JTable
进行渲染的两列JLabel
可能是第三种选择。有关详细信息,请参阅How to Use Tables—Concepts: Editors and Renderers。