2012-02-13 27 views
1

我一直在試圖建立一個類可以做到以下幾點:

•設置:字體對準(左,中,右,對齊)
•一種有效的方式將append文本添加到文檔中。
文本並不需要是可選擇或可編輯。 我必須能夠覆蓋的文字畫/渲染。如何創建一個簡單的段落類

我發現JDK JTextComponent類是很難有效地使用,因爲這是我迄今爲止,但它遠不是我想要實現:

public class Paragraph extends JTextPane{ 

    public Paragraph(){ 
     this.setFont(Fonts.PARAGRAPH); 
     this.setOpaque(false); 
    } 

    // ridiculously slow 
    public void append(String s) { 
    SimpleAttributeSet def = new SimpleAttributeSet(); 
    StyleConstants.setForeground(def, Colors.PARAGRAPH); 
    Document d = getDocument(); 
    try { 
     d.insertString(d.getLength(), s, def); 
    } catch (BadLocationException ble) { 
    } 
} 
} 



問題:有沒有什麼圖書館可以節省我重新發明輪子的時間?
如果不是,我該如何去擴展JDK的實現?謝謝

+0

_save我重新發明輪子_簡單:不要;-)你認爲需要修復的問題是什麼? 「高效」是什麼意思? – kleopatra 2012-02-13 09:46:20

+1

忘記了:_never_子類只是配置 – kleopatra 2012-02-13 09:48:51

+0

@kleopatra你能解釋你的第二個評論多一點嗎? – rtheunissen 2012-02-13 10:05:13

回答

4

你的文檔應該是StyledDocument實例。然後使用Document實例的setParagraphAttributes()方法。

對於多個附加使用一個單獨的文件(未設置到JTextPane的實例。

使用套件OT創建一個新的空文檔實例。呼叫你所有的追加,然後setDocument(theDocInstance)到的JTextPane。

+0

聽起來很有趣,我會放棄它。 – rtheunissen 2012-02-13 10:05:52

+0

好吧,這很好,很快,但我不知道現在如何設置'字體'?我可以看看它。謝謝。 – rtheunissen 2012-02-13 10:10:32

+0

您可以像以前一樣插入屬性。插入字符串後,通過setParagraphAttributes()方法將段落屬性應用於插入的片段。 – StanislavL 2012-02-13 10:21:16