2013-06-27 56 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