簡體   English   中英

如何將RTF格式的字符串打印到JLabel?

[英]How can I print a RTF formatted String to a JLabel?

我有自定義的JComponent ,它可以執行很多繪制操作。

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

我想在沒有bufferedimages的情況下這樣做,因為如果我有一個裝滿圖像的大jcomponent,我會得到一個溢出錯誤(RAM)

像AttributedString這樣的東西可以工作,但是怎么辦呢?

我真的不知道如何從Jtextpane中獲取RTF文本 (或者如果有更好的編輯器plz告訴我), 然后在“ paintComponent(Graphics g)”方法中繪制它

編輯器僅用於輕松設置文本格式,而不用於演示文稿(由我自己的組件完成)

誰能幫我嗎?


謝謝你的幫助,

所以我創建了一個AttributeString,然后在其中應用RTF格式?

您知道如何將RTF信息擴展為適當的AttributedString嗎? 例如,將格式化文本轉換為AttributedString之類的函數

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

非常感謝

試試這個自定義的AdvancedRTFEditorKit http://java-sl.com/advanced_rtf_editor_kit.html

您可以解析基礎文檔的結構以獲取實際元素。 每個元素都有一組屬性,您可以使用getAttributes()進行訪問。

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

然后在Graphics上繪制字符串。 查看本教程 ,該教程使用TextLayout呈現AttributedString。

此處查看styledDocumentToAttributedString()方法。 它可能已經實現了您所需要的; 這取決於您的字符串的復雜程度。 同樣,該討論可能是有用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM