Java打印API-使用单间距';错误打印的空格字符;信使新&x27;字体

Java打印API-使用单间距';错误打印的空格字符;信使新&x27;字体,java,swing,printing,jtextpane,Java,Swing,Printing,Jtextpane,让我首先描述一下下面的图片: 有两张打印纸。它们之间唯一的区别是,左侧纸张上的几个空格“”字符被右侧纸张上的点“”字符替换。 红线表示文本应与之对齐的左边框 绿色曲线表示我打算将它连接的所有字符对齐到一列中。事实上,绿色曲线应该是一条垂直线。 我希望绿线突出显示的所有字符都打印在一列中 字符串的字体是单间距的。但是,空格字符似乎不是以单间距打印的(请参见“虚线”与开头带有空格字符的线) 要打印字符串,我使用JTextPane组件上的标准Java打印服务API: PrinterJob pj

让我首先描述一下下面的图片:

  • 有两张打印纸。它们之间唯一的区别是,左侧纸张上的几个空格“”字符被右侧纸张上的点“”字符替换。
  • 红线表示文本应与之对齐的左边框
  • 绿色曲线表示我打算将它连接的所有字符对齐到一列中。事实上,绿色曲线应该是一条垂直线。

我希望绿线突出显示的所有字符都打印在一列中

字符串的字体是单间距的。但是,空格字符似乎不是以单间距打印的(请参见“虚线”与开头带有空格字符的线)

要打印字符串,我使用JTextPane组件上的标准Java打印服务API:

PrinterJob pj = PrinterJob.getPrinterJob(); 
pj.setPrintable(myTextPane);
pj.print();
据我所知,Java打印服务API实际上调用了myTextPane的paint()方法。 因此,预览应该与String的打印版本完全相同

然而,事实并非如此。预览似乎没有误解单间隔空格字符(请参见最后一张图片)。预览看起来与我希望打印的文本完全一样


有没有建议如何强制JavaPrintServiceAPI正确打印单空格字符?

我认为您无法在打印API中解决这个问题

首先将“绿色”数字后的每一行分成左和(可能为空)右两个子字符串

JTextArea
中,使用
align
对齐两列HTML表格,如中所述

作为
JTextPane
的替代方法,使用
JLabel的
GridLayout
。让左栏
右对齐
和右栏
左对齐


使用
JLabel
进行渲染的两列
JTable
,可能是第三种选择。有关详细信息,请参阅。

该问题可能与+1中描述的问题有关,以获得令人信服的说明。我认为sun的错误数据库中已经列出了该错误:如果您需要解决该问题的帮助,请毫不犹豫地更新此问题或提出新问题。特别是,考虑<代码>字体。单倍行距
代替Windows字体。@垃圾神:我用的是
字体。单倍行距
我运行的是Linux,不是Windows。问题就在那里。你找到解决办法了吗?我无法在1.6.0_26上复制它。我在1.6.0_27上运行。我试着在bug的[page]{}中用'DReese'来描述它。不幸的是,它不起作用,所以我决定编写自己的JComponent,它能够预览和打印任何纯文本。要复制错误,请将monospace字体设置为[Print preview JTextPane component]{}并打印它。