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

Java-如何完全删除JTextPane中的行距(垂直间距)和字符间距(水平间距)?,java,jtextpane,spacing,ascii-art,Java,Jtextpane,Spacing,Ascii Art,我无法从JTextPane中完全删除行距和字符间距。这可能吗 谷歌向我展示了下面的代码片段,但它似乎对我的电脑没有任何影响 JTextPane,据我所知,它只会消除垂直间隙(行之间的空格) 我目前已将JTextPane的字体设置为“Consolas”,字体大小为9。我试图正确显示某些ASCII艺术(就像它一样) 这就是它在我的GUI的JTextPane中的外观,以及我希望它的外观: 这就是NFO查看器显示相同ASCII艺术的方式(正确的方式) 我尝试过使用与该死的NFO VIEWER相同的字

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

谷歌向我展示了下面的代码片段,但它似乎对我的电脑没有任何影响
JTextPane
,据我所知,它只会消除垂直间隙(行之间的空格)

我目前已将
JTextPane
的字体设置为“Consolas”,字体大小为9。我试图正确显示某些ASCII艺术(就像它一样)

这就是它在我的GUI的
JTextPane
中的外观,以及我希望它的外观:

这就是NFO查看器显示相同ASCII艺术的方式(正确的方式)

我尝试过使用与该死的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);

文本窗格可能无法为您提供所需的控制级别。即使将字符之间的间距调整为负值,您也可能会发现需要按不同的量调整不同的字符,以允许进行字距调整等。如果您使用图像,并自行渲染文本,则可以很好地控制位置,并将其准确放置在需要的位置

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


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

您是否尝试过
样式常量。setspaceover
setspacedown
?是的,我也尝试过。仍然没有任何更改,可能我没有正确地应用
SimpleAttributeSet()
。为了完整起见,
StyleConstants.SetspaceUpper(AttributeSet,f)
StyleConstants.SetspaceDown(AttributeSet,f)
似乎在设置文本与
JTextPane
上下边框的距离,类似于CSS填充。问题是,我希望ASCII艺术是可编辑的。如果我将其渲染为图像,它可能会正确显示,但用户将无法编辑它。必须有一个简单的方法来实现这一点。
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);