2012-04-12 156 views
2
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null); 

結果:一個HTMLEditorKit insertHTML增加了一個新行標籤字符串

"Test 
" 

- 新增 '\ n'

HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B); 

結果:

"Test</b>" 

如何在最後沒有添加任何內容的文本?

我使用JTextPane。使用hTMLEditorKit.insertHTML方法打包一個名爲「append(string)」的方法來追加文本。

但是當我追加一些字符串如 「123」; 「456」; 「789」;

我從來沒有追加的字符串,如 「

組件無法顯示,我想:

123456789 

它會顯示文字像的JTextPane:

123 
456 
789 

回答

2

首先,我不知道你是否已經解決了你的問題,考慮到三個月前你問這個問題嘿嘿。但我也有這個問題,並認爲我會發布我如何解決它。

這可能是一個醜陋的解決方案,但是這是我做的:

HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>Test</span>", 0, 0, HTML.Tag.SPAN); 

同樣,以下連續insertHTML通話將打印的號碼你想要的方式:

HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>123</span>", 0, 0, HTML.Tag.SPAN); 
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>456</span>", 0, 0, HTML.Tag.SPAN); 
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>789</span>", 0, 0, HTML.Tag.SPAN); 

我不確定爲什麼僅將span標籤包含在字符串中是不夠的,但您還必須將HTML.Tag.SPAN與函數調用一起傳遞(這對於我來說花了這麼長時間)。 如果標籤對象已被指定,它可能會覆蓋添加換行符的默認行爲。

這種方法的唯一問題是你得到所有這些span標籤混亂的html文檔,至少對我而言,這是不可取的。

如果有任何其他(更優雅)的方式來操縱HTMLEditorKit不自動添加換行符,我很想知道它。

0

我發現:

你只需要用unicode替換「」。您可以使用某個DocumentFilter或攔截太空按鍵來完成:

protected class Filtre extends DocumentFilter implements Serializable { 

    public Filtre() { 
    } 

    @Override 
    public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException { 
     replace(fb, offset, 0, str, attr); 
    } 

    @Override 
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException { 
     String result = str.replaceAll(" ", "\u00A0"); 
     fb.replace(offset, length, result, attrs); 
    } 
0

我認爲有一個簡單的解決這個問題,用:

doc.insertString(doc.getLength(), "Test", null); 
時要添加純文本

和HTMLEditorKit.insertHTML時HTML。