Java 如何将RTF格式的字符串打印到JLabel?
我有自己的自定义JComponent,它执行许多绘图操作 它们还包括文本段落的抽绳,但现在我想格式化文本(在一个单独的窗口中,使用jtextpane或另一个RTF编辑器)(粗体、字体大小、对齐、字体颜色、列表),并在我自己的组件中显示格式化的文本 我喜欢在没有BuffereImage的情况下这样做,因为如果我有一个很大的jcomponent,里面有很多映像,我会得到一个溢出错误(RAM) 像AttributedString这样的东西可以工作,但是如何工作呢 我真的不知道如何从Jtextpane中获取RTF文本(或者如果有更好的编辑器,请告诉我)并使用“paintComponent(Graphics g)”方法绘制它 编辑器只是用于轻松格式化文本,而不是用于演示文稿(使用我自己的组件完成) 有人能帮我吗Java 如何将RTF格式的字符串打印到JLabel?,java,swing,formatting,paintcomponent,jtextcomponent,Java,Swing,Formatting,Paintcomponent,Jtextcomponent,我有自己的自定义JComponent,它执行许多绘图操作 它们还包括文本段落的抽绳,但现在我想格式化文本(在一个单独的窗口中,使用jtextpane或另一个RTF编辑器)(粗体、字体大小、对齐、字体颜色、列表),并在我自己的组件中显示格式化的文本 我喜欢在没有BuffereImage的情况下这样做,因为如果我有一个很大的jcomponent,里面有很多映像,我会得到一个溢出错误(RAM) 像AttributedString这样的东西可以工作,但是如何工作呢 我真的不知道如何从Jtextpane中
谢谢你的帮助 所以我创建了一个AttributeString,然后在其中应用RTF格式 您知道如何将RTF信息挤出到适当的AttributeString中吗?e、 g.将格式化文本转换为属性字符串的函数,如
public AttributedString getAttrString(String plainRTF){
...
}
非常感谢您可以解析底层的结构以获得实际的元素。每一个都有一组可以访问的属性 您可以使用
document.getText()
构建AttributedString
,并使用AttributedString.addAttribute()
方法应用相应的样式
然后在图形上绘制字符串。检查这个使用TextLayout呈现AttributedString的文件
请看styledDocumentToAttributedString()
方法。它可能已经实现了你所需要的;这取决于字符串的复杂性。此外,这可能是有用的 试试这个定制的AdvancedRTFEditorKit
在我的问题中,有一个链接指向此类函数的示例实现。这是一个有点简化,但应该给你一个大致的想法。