2012-03-15 66 views
0

我有我的定制JComponent它做了很多绘图操作。如何将RTF格式的字符串打印到JLabel?

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

编号喜欢做的事,没有bufferedimages因为如果我有一个很大的JComponent充满图像,我会得到一个溢出错误(RAM)

喜欢的东西与AttributedString可以工作,但如何?

我真的不知道如何得到RTF文本出的JTextPane的(或者,如果有更好的编辑PLZ告诉我),绘制的“的paintComponent(图形G)”方法

编辑器只是用来文本格式轻松,而不是为演示(这是我自己的组件完成的)

谁能帮助我吗?


感谢您的帮助,

,所以我创建AttributeString,然后应用RTF-打印格式的呢?

你知道我如何将RTF信息挤出到足够的AttributedString?例如其将格式化的文本构造一个AttributedString像

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

非常感谢

+0

有我的问题,以这样的功能的示例实现的链接。这有点简单,但应该给你一个大概的想法。 – tenorsax 2012-03-19 03:23:19

回答

0

您可以分析底层Document的结构的函数来获得实际的元素。每个Element都有一组您可以通过getAttributes()访问的属性。

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

然后在Graphics上画字符串。看看这个使用TextLayout呈现AttributedString的tutorial

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