0

我无法从JTextPane. 这甚至可能吗?

谷歌向我展示了以下代码片段,但它似乎对我 JTextPane的 .

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

我目前已将JTextPane's 字体设置为“Consolas”,字体大小为 9。我正在尝试正确显示某些 ASCII 艺术(就像DAMN NFO VIEWER一样)。

这就是它在我的 GUI 中的样子JTextPane以及我希望它的样子:

ascii 编辑器间距可视化

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

间距正确

我试过使用与 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);
4

2 回答 2

0

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

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

将多行多页格式化文本渲染到 BufferedImage(不在 Android 中)

于 2014-03-14T22:07:56.900 回答
0

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

于 2014-05-17T16:51:59.980 回答