2011-02-27 66 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

相關問題