将 JTextPane 内容(图像、表格)保存在文件中

Posted

技术标签:

【中文标题】将 JTextPane 内容(图像、表格)保存在文件中【英文标题】:Save JTextPane contents(Image ,table) in a file 【发布时间】:2016-10-29 13:32:18 【问题描述】:

我正在尝试用 Java 制作文本编辑器,但遇到了一些问题。

我可以使用 insertIcon() 将图像添加到 JTextPane,但是当我保存它时,文件是空的,我试图将它保存为 .doc。 当我尝试更改字体时它是一样的,它在 JTextPane 中工作,但是当我保存它的默认字体时,不是我拥有的字体/大小。

这是我的 saveFile 方法:

      try 
        BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
        writer.write(text.getText());
        writer.close();
        saved = true;
     catch (IOException err) 
        err.printStackTrace();
    

提前致谢:P

编辑:

我正在像这样在我的 JTextPane 中插入图像:

JFileChooser open = new JFileChooser();
            open.showOpenDialog(null);
            File file = open.getSelectedFile();
            Icon image = new ImageIcon(String.valueOf(file));
           text.insertIcon(image);

我正在使用上面的 saveFile 方法将 JTextPane 保存到文件中。 图像被添加到 JTextPane 中,一切都很好。但是当我打开文件时,图像不存在。

【问题讨论】:

1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) 例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。 3) 试试JTextComponent.write(Writer) 这个方法我试过了,但是不行。 当您所做的只是保存文本时,为什么还要保存图像?在这种情况下,图像将如何神奇地写入? 编辑的重点是什么?那个 MCVE 在哪里?投票结束。 如果您需要认真的帮助,请遵循@AndrewThompson 的建议。 【参考方案1】:

您可以在关闭之前尝试刷新 writer。添加行 writer.flush()。这将刷新底层输出流。基本上从这里开始写入文件。

编辑:我测试了代码并将其写入文件。你的问题是字体和你保存之前不一样吗?

【讨论】:

是的,当我插入图片时,它不会保存到文件中。 图片没有保存到文件中?你只是在写文本。要保存整个组件,您必须按照 Andrew 的建议进行操作。这将保存组件的当前状态。而不仅仅是文字。 我试过他说的不行,可能是我没做对吧? text.write(作家);【参考方案2】:

您需要使用 EditorKit。明天我会写一个更准确的答案。

【讨论】:

以上是关于将 JTextPane 内容(图像、表格)保存在文件中的主要内容,如果未能解决你的问题,请参考以下文章

将 JTextPane 上标文本另存为 RTF

保存 JTextPane,然后用 Java 打开它

如何正确打印出带有“text/rtf”内容的 JTextPane 的硬拷贝?

将 HTML 表格另存为图像

JTextPane - 内容在哪里?

在 JScrollPane 上设置滚动条