12

我对我正在制作的一些简单控制台有疑问。我知道可以setText()使用先前设置的功能将 html 内容添加到 JTextPane 中setContentType("text/html");。但是为了我的应用程序的需要,我需要直接使用 javax.swing.text.Document,它是我通过getDocument()函数获得的(例如,用于删除行并附加新行,是的,这是我正在制作的一种控制台,我在之前的 StackOverflow 问题中已经看到了几个例子,但没有一个能满足我的需求)。所以,我想要的是将 HTML 插入到文档中,并让它在我的 JTextPane 上正确呈现。问题是当我使用insertString()方法(属于文档)添加 HTML 内容时,JTextPane 没有呈现它,并且在输出中我看到了所有的 html 标记。有没有办法让它正常工作?

这就是我插入文本的方式:

text_panel = new JTextPane();
text_panel.setContentType("text/html");

//...

Document document = text_panel.getDocument();
document.insertString(document.getLength(), line, null);
text_panel.setCaretPosition(document.getLength());
4

1 回答 1

26

您需要使用HTMLEditorKit插入。

    JTextPane text_panel = new JTextPane();
    HTMLEditorKit kit = new HTMLEditorKit();
    HTMLDocument doc = new HTMLDocument();
    text_panel.setEditorKit(kit);
    text_panel.setDocument(doc);
    kit.insertHTML(doc, doc.getLength(), "<b>hello", 0, 0, HTML.Tag.B);
    kit.insertHTML(doc, doc.getLength(), "<font color='red'><u>world</u></font>", 0, 0, null);
于 2011-02-27T12:57:56.100 回答