【问题标题】:Java JTextPane changes line height when UTF8 character is addedJava JTextPane 在添加 UTF8 字符时更改行高
【发布时间】:2017-02-25 09:31:49
【问题描述】:

我正在使用 Java JDK 1.6,但在使用 JTextPane 以等宽字体显示文本时遇到问题。一旦我添加了一个 UTF8 字符,例如 ????,文本窗格中的行高就会减小(对于窗格中已经存在的所有文本以及以后添加的所有文本)。我怎样才能避免这种情况?我想要正常的行高。

这里是一些示例代码:

    class AttributedTextPane extends JTextPane
    {

        private DefaultStyledDocument defaultStyledDocument;

        protected AttributedTextPane()
        {
            this.defaultStyledDocument = new DefaultStyledDocument();
            this.setDocument(defaultStyledDocument);

            this.setContentType("text/plain");
            ...
        }
    }
    ...

此窗格集成到 JInternalFrame 中。创建面板并设置所需的等宽字体:

    Font font = new Font("DejaVu Sans Mono", Font.PLAIN, 11);
    AttributedTextPane pane = new AttributedTextPane();
    pane.setFont(font);

要显示所需的文本,我调用 pane.setText(...);一旦我添加了 UTF8 字符,行高就会改变,请参阅http://i.imgur.com/Fq7XBJB.png 的屏幕截图。有没有办法避免改变行高? 谢谢,节目主持人

【问题讨论】:

    标签: java utf-8 fonts height jtextpane


    【解决方案1】:

    您可以尝试像这样设置/强制行高:

    MutableAttributeSet jTextPaneSet = new SimpleAttributeSet(pane.getParagraphAttributes());
    StyleConstants.setLineSpacing(jTextPaneSet, 1.5f); //replace float 1.5f with your desired line spacing/height
    

    来源:

    http://docs.oracle.com/javase/8/docs/api/javax/swing/JTextPane.html#setParagraphAttributes(javax.swing.text.AttributeSet,%20boolean)

    https://docs.oracle.com/javase/7/docs/api/javax/swing/text/StyleConstants.html#setLineSpacing(javax.swing.text.MutableAttributeSet,%20float)

    【讨论】:

    • 感谢您的帮助,但使用 StyleConstants.setLineSpacing(...) 似乎没有帮助。我测试了它,但它没有改变任何东西。更改其他样式参数(如颜色、粗体、斜体)效果很好,但没有行距。
    • 对不起,必须纠正我的最后评论。似乎已经很晚了,所以我犯了一些错误。使用 StyleConstants.setLineSpacing(...) 可以正常工作,至少如果您不会错过为窗格设置新属性:MutableAttributeSet jTextPaneSet = new SimpleAttributeSet(pane.getParagraphAttributes()); StyleConstants.setLineSpacing(jTextPaneSet, 0.2f); pane.setParagraphAttributes(jTextPaneSet, true); 谢谢你,sorifiend!
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 2019-02-04
    • 2020-02-06
    • 2012-03-09
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多