JTextPane 最后一行字体较小
JTextPane last line with smaller font size
我对 JTextPane 有疑问。如果我在最后一行向 JTextPane 写了一些东西,那么最后一行的大小与前面其他行的大小不同。按下 ENTER 后,行向上移动一点。我发现,这种行为只是为了防止字体大小小于 12。最后一行不能小于某个大小。你知道如何消除这种奇怪的行为吗?
有我的SSCCE:
JFrame frame = new JFrame();
frame.setSize(350, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextPane pane = new JTextPane();
MutableAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setFontSize(attrs, 11);
pane.setCharacterAttributes(attrs, false);
frame.add(pane);
frame.setVisible(true);
那是因为最后一段的属性。它具有默认属性,默认字体大小为 12。要修复,请尝试将字符属性应用于最后一个 \n 字符。
StyledDocument doc=(StyledDocument)pane.getDocument();
doc.setCharacterAttributes(0, doc.getLength()+1, attrs, false);
是的。长度+1 以包含文档末尾之后的最后一个字符。
我对 JTextPane 有疑问。如果我在最后一行向 JTextPane 写了一些东西,那么最后一行的大小与前面其他行的大小不同。按下 ENTER 后,行向上移动一点。我发现,这种行为只是为了防止字体大小小于 12。最后一行不能小于某个大小。你知道如何消除这种奇怪的行为吗?
有我的SSCCE:
JFrame frame = new JFrame();
frame.setSize(350, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextPane pane = new JTextPane();
MutableAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setFontSize(attrs, 11);
pane.setCharacterAttributes(attrs, false);
frame.add(pane);
frame.setVisible(true);
那是因为最后一段的属性。它具有默认属性,默认字体大小为 12。要修复,请尝试将字符属性应用于最后一个 \n 字符。
StyledDocument doc=(StyledDocument)pane.getDocument();
doc.setCharacterAttributes(0, doc.getLength()+1, attrs, false);
是的。长度+1 以包含文档末尾之后的最后一个字符。