我的自定义JComponent 可以执行大量的绘图操作。
它们还包括用于文本段落的drawStrings,但现在我喜欢格式化文本(在带有jtextpane或其他RTF编辑器的单独窗口中)(粗体,字体大小,对齐,字体颜色,列表)并显示此格式我自己的组件中的文本。
我想在没有缓冲图像的情况下这样做,因为如果我有一个充满图像的大jcomponent,我会得到一个溢出错误(RAM)
像AttributedString这样的东西可以工作,但是怎么样?
我真的不知道如何从Jtextpane中获取 RTF-Text (或者如果有更好的编辑器,请告诉我)和在“paintComponent”中绘制它(图形g)“方法。
编辑器只是用来轻松格式化文本,而不是用于演示文稿(使用我自己的组件完成)
有人可以帮我吗?
感谢您的帮助,
所以我创建一个AttributeString,然后在其中应用RTF格式?
你知道如何将RTF信息拉伸到适当的AttributedString吗?例如将格式化文本转换为AttributedString的函数,如
public AttributedString getAttrString(String plainRTF){
...
}
非常感谢
答案 0 :(得分:1)
尝试使用此自定义AdvancedRTFEditorKit http://java-sl.com/advanced_rtf_editor_kit.html
答案 1 :(得分:0)
您可以解析基础Document的结构以获取实际元素。每个Element都有一组您可以使用getAttributes()访问的属性。
您可以使用AttributedString
构建document.getText()
并使用AttributedString.addAttribute()
方法应用相应的样式。
然后在Graphics
上绘制字符串。查看使用TextLayout呈现AttributedString的tutorial。
查看styledDocumentToAttributedString()
方法here。它可能已经实现了你所需要的东西;这取决于你的字符串的复杂性。此外,此discussion可能很有用。