2013-06-27 33 views
0

如何将JTextPane上标文本保存为RTF?将JTextPane上标文本保存为RTF

我想创建写字板就像文本编辑器。我用RTFEditorKit。我可以使用下面的代码添加上标。 (例如:X到电源2)

public void setSuperscript() { 
    EditorKit editorKit = this.getEditorKit(); 
    MutableAttributeSet att = ((StyledEditorKit) editorKit).getInputAttributes(); 
    StyleConstants.setSuperscript(att, !StyleConstants.isSuperscript(att)); 
    super.setCharacterAttributes(att, false); 
} 

然后我保存下面的文档。

public void save(String fileName) { 
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(fileName)); 
    try { 
    StyledDocument doc = this.getStyledDocument(); 
    OutputStream outputStream = new FileOutputStream(fileName); 
    this.getEditorKit().write(out, doc, 0, doc.getLength()); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } finally { 
    out.close(); 
    } 
} 

它已成功保存。但是,当我用写字板或Microsoft Word上标记格式打开它缺失。

使用AdvancedEditorKit我得到了这个工作。

JTextPane pane = new JTextPane(); 
AdvancedRTFDocument document = new AdvancedRTFDocument(); 
AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit(); 
editor.write("test.rtf", document); 
+0

为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

+0

谢谢安德烈。我会记住 – manjula121

回答

0

您可以使用替代RTFEditorKithttp://java-sl.com/advanced_rtf_editor_kit.html

默认一个具有有限的功能这么多的RTF格式不支持这些功能。

+0

我试过了你的AdvancedRTFEditorKit。但它没有保存任何东西。保存文件后空白。 JTextPane textPane = new JTextPane(); AdvancedRTFEditorKit kit = new AdvancedRTFEditorKit(); textPane.setEditorKit(kit); textPane.setDocument(new AdvancedRTFDocument()); StyledDocument doc =(StyledDocument)textPane.getDocument(); OutputStream out = new FileOutputStream(“output.rtf”); (),doc,0,doc.getLength()); – manjula121

+0

终于搞定了。谢谢StanislavL – manjula121