2011-02-27 60 views
12

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

这就是我如何插入文本:

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()); 

回答

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); 
+1

谢谢,这是我需要的;) – Serhiy 2011-02-27 13:22:27

+0

谢谢!这工作完美。 – Qix 2012-12-20 09:35:59

+1

我一直在寻找这个,它非常有帮助,非常感谢,但是,对于超链接,用户界面渲染在悬停和下划线上显示蓝色文本没有发生。任何帮助 – Kiran 2014-04-12 18:01:49

相关问题