0

我有我的自定义 JComponent,它可以进行很多绘图操作。

它们还包括用于文本段落的 drawStrings,但现在我想格式化文本(在带有 jtextpane 或其他 RTF 编辑器的单独窗口中)(粗体、字体大小、对齐、字体颜色、列表)并在我的自己的组件。

我想在没有缓冲图像的情况下这样做,因为如果我有一个充满图像的大 jcomponent,我会收到溢出错误(RAM)

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

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

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

任何人都可以帮助我吗?


谢谢你的帮助,

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

你知道我怎样才能将 RTF 信息挤出到一个足够的 AttributedString 吗?例如,将格式化文本转换为 AttributedString 之类的函数

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

非常感谢

4

2 回答 2

1

试试这个自定义的 AdvancedRTFEditorKit http://java-sl.com/advanced_rtf_editor_kit.html

于 2012-03-16T05:42:36.303 回答
0

您可以解析底层Document的结构以获取实际元素。每个元素都有一组属性,您可以使用getAttributes()访问。

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

然后在 上画线Graphics。查看使用 TextLayout 呈现 AttributedString 的本教程。

看看styledDocumentToAttributedString()方法here。它可能已经实现了您所需要的;这取决于字符串的复杂性。此外,这个讨论可能很有用。

于 2012-03-16T04:45:03.960 回答