2012-03-15 99 views
0

我有我的定製JComponent它做了很多繪圖操作。如何將RTF格式的字符串打印到JLabel?

它們還包括用於文本段落的drawStrings,但現在我想要格式化文本(在帶jtextpane或另一個RTF編輯器的單獨窗口中)(粗體,字體大小,對齊,字體顏色,列表)並顯示此內容格式化文本在我自己的組件中。

編號喜歡做的事,沒有bufferedimages因爲如果我有一個很大的JComponent充滿圖像,我會得到一個溢出錯誤(RAM)

喜歡的東西與AttributedString可以工作,但如何?

我真的不知道如何得到RTF文本出的JTextPane的(或者,如果有更好的編輯PLZ告訴我),繪製的「的paintComponent(圖形G)」方法

編輯器只是用來文本格式輕鬆,而不是爲演示(這是我自己的組件完成的)

誰能幫助我嗎?


感謝您的幫助,

,所以我創建AttributeString,然後應用RTF-打印格式的呢?

你知道我如何將RTF信息擠出到足夠的AttributedString?例如其將格式化的文本構造一個AttributedString像

public AttributedString getAttrString(String plainRTF){ 
    ... 
} 

非常感謝

+0

有我的問題,以這樣的功能的示例實現的鏈接。這有點簡單,但應該給你一個大概的想法。 – tenorsax 2012-03-19 03:23:19

回答

0

您可以分析底層Document的結構的函數來獲得實際的元素。每個Element都有一組您可以通過getAttributes()訪問的屬性。

您可以使用document.getText()構建AttributedString並使用AttributedString.addAttribute()方法應用相應的樣式。

然後在Graphics上畫字符串。看看這個使用TextLayout呈現AttributedString的tutorial

看看styledDocumentToAttributedString()方法here。它可能已經實現了你所需要的;這取決於你的字符串的複雜性。此外,這discussion可能會有用。