无法在JTextPane中更改字体(大小,族,行空间)

时间:2018-01-14 20:54:46

标签: java jtextpane

我做了一个小注释,用户可以更改字体大小和系列,也可以改变行间距 我使用此代码来设置字体大小,族和行空间

 MutableAttributeSet set = new SimpleAttributeSet();
 StyleConstants.setLineSpacing(set, line);
 StyleConstants.setFontSize(set, font_size);
 StyleConstants.setFontFamily(set, FontFamily);
 JTextPane.setParagraphAttributes(set, true);

问题,当我已经在jtextpane中写入文本时,它不会更改为我设置的字体,所以我这样做是为了检查更改是否生效。

 MutableAttributeSet s = JTextPane.getInputAttributes();
 float p = StyleConstants.getLineSpacing(s);
 String family = StyleConstants.getFontFamily(s);
 int size = StyleConstants.getFontSize(s);

在我更改之前它是相同的所以我做错了哪些使我的更改不会对jtextpane中写的所有文本生效。
当我检查字体大小,系列和行空间时,我发现它没有改变?

更新
感谢FredK,他在评论中说,我必须选择所有文本来应用更改,我也使用这个代码,使其成为woks

    MutableAttributeSet set = new SimpleAttributeSet();
    StyleConstants.setLineSpacing(set, line);
    StyleConstants.setFontSize(set, font_size);
    StyleConstants.setFontFamily(set, FontFamily);
    //i use this code to apply the change to all the text 
    StyledDocument doc = (StyledDocument) MainTextArea.getDocument();
    doc.setCharacterAttributes(0, doc.getLength() + 1, set, false);

    MainTextArea.setParagraphAttributes(set, true);

我使用这两行将更改应用于所有文本如果我选择了没有它们的所有文本它将无效。
我现在有两个问题

1 - 如果我在空的JTextPane上更改字体数据它将不会生效所以我应该写至少一个字符然后选择所有文本以使用新代码应用更改,以便发生更改并且我可以用新字体写。
我解决它的时候JtextPain是空的我可以添加任何字符然后选择全部并应用新字体如果不是空的我使用当前文本所以如果没有人有更好的我们可以留下它的解决方案

2 - 使用上面的方法更改字体后,当我使用检查代码获取当前字体大小,系列和行空间时,它给出了旧字体而不是JtextPan上应用的字体。 /> 我尝试选择所有然后获取字体信息,它现在也工作,所以我如何获得字体大小,系列和行空间,因为我保存或编辑它。
提前致谢

0 个答案:

没有答案