在JTextArea或JTextPane中设置文本样式



基本上,我有一个JTextPane来保存一些我希望设置样式的文本。JTextArea对我来说会更好地使用,但我被告知你不能在其中设置文本样式?

但是,JTextPane的样式似乎不正确。例如,以下代码刚刚返回,其中包含HTML:

public static void main(String[] args) {
    JFrame j = new JFrame("Hello!");
    j.setSize(200,200);
    JTextPane k = new JTextPane();
    k.setText("<html><strong>Hey!</strong></html>");
    j.add(k);
    j.setVisible(true);
}

当用户与界面交互时,我希望能够在JTextPane中设置一些文本的样式,但到目前为止,它只返回HTML仍在的字符串!帮助

如果要在JTextPane中显示Html内容,则必须设置为JTextPane#setContentType("text.html");,示例

编辑:

对于JEditorPanes / JTextPanes,有没有另一种方法可以实现StyledDocument、MutableAttributeSet和自定义的Highlighter,例如

a.m.方式不使用Html syntax

使用setContentType方法让Java知道它将是HTML。

k.setContentType("text/html"); 

我使用外观(Substance),调用setContentType("text/html")时显示的字体有问题。我打电话给解决了这个问题

textPane.putClientProperty(JTextPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);

另一种选择是将HTML文本包装在JLabel中。按照你的例子,代码是:

JTextPane k = new JTextPane();
k.insertComponent(new JLabel("<html><strong>Hey!</strong></html>"));

最新更新