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

Java 如何将RTF格式的字符串打印到JLabel?,java,swing,formatting,paintcomponent,jtextcomponent,Java,Swing,Formatting,Paintcomponent,Jtextcomponent,我有自己的自定义JComponent,它执行许多绘图操作 它们还包括文本段落的抽绳,但现在我想格式化文本(在一个单独的窗口中,使用jtextpane或另一个RTF编辑器)(粗体、字体大小、对齐、字体颜色、列表),并在我自己的组件中显示格式化的文本 我喜欢在没有BuffereImage的情况下这样做,因为如果我有一个很大的jcomponent,里面有很多映像,我会得到一个溢出错误(RAM) 像AttributedString这样的东西可以工作,但是如何工作呢 我真的不知道如何从Jtextpane中

我有自己的自定义JComponent,它执行许多绘图操作

它们还包括文本段落的抽绳,但现在我想格式化文本(在一个单独的窗口中,使用jtextpane或另一个RTF编辑器)(粗体、字体大小、对齐、字体颜色、列表),并在我自己的组件中显示格式化的文本

我喜欢在没有BuffereImage的情况下这样做,因为如果我有一个很大的jcomponent,里面有很多映像,我会得到一个溢出错误(RAM)

像AttributedString这样的东西可以工作,但是如何工作呢

我真的不知道如何从Jtextpane中获取RTF文本(或者如果有更好的编辑器,请告诉我)并使用“paintComponent(Graphics g)”方法绘制它

编辑器只是用于轻松格式化文本,而不是用于演示文稿(使用我自己的组件完成)

有人能帮我吗


谢谢你的帮助

所以我创建了一个AttributeString,然后在其中应用RTF格式

您知道如何将RTF信息挤出到适当的AttributeString中吗?e、 g.将格式化文本转换为属性字符串的函数,如

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

非常感谢

您可以解析底层的结构以获得实际的元素。每一个都有一组可以访问的属性

您可以使用
document.getText()
构建
AttributedString
,并使用
AttributedString.addAttribute()
方法应用相应的样式

然后在
图形上绘制字符串。检查这个使用TextLayout呈现AttributedString的文件


请看
styledDocumentToAttributedString()
方法。它可能已经实现了你所需要的;这取决于字符串的复杂性。此外,这可能是有用的

试试这个定制的AdvancedRTFEditorKit

在我的问题中,有一个链接指向此类函数的示例实现。这是一个有点简化,但应该给你一个大致的想法。