Java - 如何在JTextPane中完全删除行间距(垂直间隙)和字符间距(水平间隙)?

时间:2014-03-14 22:00:25

标签: java jtextpane spacing ascii-art

我无法从JTextPane完全删除行间距和字符间距。这甚至可能吗?

谷歌向我展示了以下代码片段,但它似乎对我没有任何影响 JTextPane,据我所知,它只能摆脱垂直间隙(线间距)。

SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setLineSpacing(sas , 0.0f);
textPane.setParagraphAttributes(sas , false);

我目前已将JTextPane的字体设置为" Consolas",font-size 9.我正在尝试正确显示某些ASCII艺术(就像{{3}一样做到了。)

这就是我的GUI JTextPane中的样子,以及我希望它看起来如何:

ascii editor spacing visualization

DAMN NFO VIEWER显示相同的ASCII艺术(正确方式)。

spacing done correctly

我尝试使用DAMN NFO VIEWER使用的相同字体和大小,但这并没有消除差距,所以我想我必须做一些其他更改。任何建议表示赞赏。

修改

以下是我尝试应用SimpleAttributeSet()的方式,也许我做得不对:

nfoFileTextPane = new javax.swing.JTextPane();
StyledDocument doc = nfoFileTextPane.getStyledDocument();
Element e = doc.getParagraphElement(0);
MutableAttributeSet mas = new SimpleAttributeSet(); 
StyleConstants.setLineSpacing(mas, -0.2f);
StyleConstants.setSpaceAbove(mas, -0.2f);
StyleConstants.setSpaceBelow(mas, -0.2f);
//0-1000 test
doc.setParagraphAttributes(0, 1000, mas, true);

2 个答案:

答案 0 :(得分:0)

文本窗格可能无法为您提供所需的控制级别。即使您将字符之间的间距调整为负值,您可能会发现需要调整不同字符的不同字符以允许字距调整等。如果您使用图像而不是自己渲染文本,则可以获得真正精确控制位置,并将其准确放置在您需要的位置。

如果您决定这样做,我去年提出的这个问题可能会对您有所帮助:

Rendering multi-line multi-page formatted text to a BufferedImage (not in Android)

答案 1 :(得分:0)

实际上使用上面的代码正确应用了SimpleAttributeSet。只是行间距更大,-0.2f不足以缩小指定字体和大小的行之间的间隙。使用-1.0f会将线条挤压在一起并使它们重叠。