12

私が作っている簡単なコンソールについて質問があります。setText()以前に設定した関数を使用して JTextPane に html コンテンツを追加できることを知っていますsetContentType("text/html");。しかし、私のアプリケーションのニーズのために、getDocument()関数で取得した javax.swing.text.Document を直接操作する必要があります (たとえば、行を削除して新しい行を追加するなど、私が作成しているコンソールのようなものです。以前の 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 に答える