首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将StyledDocument从textPane保存到.doc文件?

如何将StyledDocument从textPane保存到.doc文件?
EN

Stack Overflow用户
提问于 2017-06-21 00:24:01
回答 1查看 962关注 0票数 0

我不知道这是否可能,但我想要做的是在.doc文件中保存一个样式文档(用户可以更改文本:粗体、下划线、斜体和3种字体)--这样他以后就可以使用任何其他支持样式文本的文本编辑器来打开它。

我写了下面的代码..。编辑器工作,我可以在文本上应用样式,但当我保存时,它只保存黑色文本,没有样式。我不知道问题出在哪里。也许行动无法挽救。我试过与作家和缓冲作家,但这是行不通的。我还尝试使用HTML编辑器工具包,但它根本不起作用-它保存了一个空白的文档。

也许有人知道我该怎么保存风格?感谢你的帮助:)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class EditFrame extends javax.swing.JFrame {

JFrame frameEdit = this;
File file; //A file I would like to save to -> fileName.doc
StyledDocument doc;   
HashMap<Object, Action> actions;
StyledEditorKit kit;

public EditFrame() {
    super();
    initComponents();
    JMenu editMenu = createEditMenu();
}

protected JMenu createEditMenu() {
    JMenu menu = editMenu;

    Action action = new StyledEditorKit.BoldAction();
    action.putValue(Action.NAME, "Bold");
    menu.add(action);

    action = new StyledEditorKit.ItalicAction();
    action.putValue(Action.NAME, "Italic");
    menu.add(action);

    //...

    return menu;
}

//I'm guessing this doesn't work correctly too (doesn't read styles), but this is another subject :)
public void readFile(File f) {
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "windows-1250"));
        textPane.read(reader, null);
        textPane.requestFocus();
    } catch (IOException ex) {
        Logger.getLogger(EditFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}

//SAVE METHOD
private void save(java.awt.event.ActionEvent evt) {                      
    try {
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
        kit = (StyledEditorKit) textPane.getEditorKit();
        doc = (StyledDocument) textPane.getDocument();
        kit.write(out, doc, 0, doc.getLength());
    } catch (FileNotFoundException ex) {
        Logger.getLogger(EditFrame.class.getName()).log(Level.SEVERE, null, ex);
    } catch (UnsupportedEncodingException | BadLocationException ex) {
        Logger.getLogger(EditFrame.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(EditFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}                     

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new EditFrame().setVisible(true);
        }
    });
}
}
EN

回答 1

Stack Overflow用户

发布于 2017-06-21 02:05:28

您可以使用RTFEditorKit,它支持富文本格式 (RTF)。许多字处理器,包括MS Word,都可以使用这种格式。坚持使用write()OutputStream,它编写“适合这种内容处理程序的格式”。另一个使用Writer的程序将“以纯文本形式写入给定的流”。

为什么StyledEditorKit不能工作?

StyledEditorKitDefaultEditorKit获得它的write()实现,“它将文本作为纯文本来处理。”StyledEditorKit在内部存储样式文本,但它不知道任何外部格式。您必须转到其中一个子类HTMLEditorKitRTFEditorKit,才能获得覆盖默认的write()。重写的方法知道如何将内部格式转换为外部格式,如RTF。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44670616

复制
相关文章
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMap的hash值计算格式是这样:(h = key.hashCode()) ^ (h >>> 16)?h ^ ^ (h >>> 16)是什么意思?
一行Java
2022/05/17
1.1K0
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
通过Kuberhealthy了解K8s的KPI
作者:Joshulyne Park(Comcast),Eric Greer(Comcast)
CNCF
2020/06/04
1.4K0
k8s 通过helm发布应用
在红帽系的Linux中我们使用yum来管理RPM包,类似的,在K8s中我们可以使用helm来管理资源对象(Deployment、Service、Ingress...)实现K8s中应用的快速发布、升级、维护和分享。helm 官方文档[1]
你大哥
2022/03/14
6350
k8s 通过helm发布应用
Map接口和其子类HashMap遍历、LinkedHashMap
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
共饮一杯无
2022/11/28
2580
Map接口和其子类HashMap遍历、LinkedHashMap
面试官:为什么重写 equals 同时要重写 hashCode? 我:…
重写equals是为了在业务逻辑上判断实例之间是否相等。重写hascode是为了让集合快速判重。
终码一生
2022/04/14
2840
Java(集合④)
当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;
全栈开发日记
2022/05/12
7250
(66) 理解synchronized / 计算机程序的思维逻辑
上节我们提到了多线程共享内存的两个问题,一个是竞态条件,另一个是内存可见性,我们提到,解决这两个问题的一个方案是使用synchronized关键字,本节就来讨论这个关键字。 用法 synchronized可以用于修饰类的实例方法、静态方法和代码块,我们分别来看下。 实例方法 上节我们介绍了一个计数的例子,当多个线程并发执行counter++的时候,由于该语句不是原子操作,出现了意料之外的结果,这个问题可以用synchronized解决。 我们来看代码: public class Counter {
swiftma
2018/01/31
7470
(66) 理解synchronized / 计算机程序的思维逻辑
JDK1.9-Map集合
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/03
3720
《Java 数据结构与算法》第5章:哈希表(散列)
哈希散列的想法在不同的地方独立出现。1953 年 1 月,汉斯·彼得·卢恩 ( Hans Peter Luhn ) 编写了一份IBM内部备忘录,其中使用了散列和链接。开放寻址后来由 AD Linh 在 Luhn 的论文上提出。大约在同一时间,IBM Research的Gene Amdahl、Elaine M. McGraw、Nathaniel Rochester和Arthur Samuel为IBM 701汇编器实现了散列。 线性探测的开放寻址归功于 Amdahl,尽管Ershov独立地有相同的想法。“开放寻址”一词是由W. Wesley Peterson在他的文章中创造的,该文章讨论了大文件中的搜索问题。
小傅哥
2022/12/13
7040
《Java 数据结构与算法》第5章:哈希表(散列)
Java类集框架详细汇总
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
BUG弄潮儿
2021/04/12
7160
【Java】Map集合
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。
陶然同学
2023/02/27
1.2K0
【Java】Map集合
如何通过Openshift实现K8S容灾?
越来越多的K8S应用采用RedHat OpenShift进行部署,IT团队需要部署容灾功能,来防范系统崩溃导致业务受损。一部分行业通常有较强的监管要求,在出现大规模错误的时候必须有数据保护。例如HIPAA 监管要求中的CFR 164.308(7)(ii)(B),要求公司必须能够在出现系统错误的时候“恢复所有数据”。这种情况下对于Openshift上的关键应用来说,容灾是必须的。
Portworx
2020/05/30
1.5K0
踩坑:在Java中使用 byte 数组作为 Map 的 key
本文将引领我们探索:如何将byte数组作为HashMap中键。HashMap的机制使我们无法直接这样做。让我们研究一下,为何出现此状况,以及针对这种情况,几种可供选择的解决方案。
万猫学社
2023/09/01
5290
踩坑:在Java中使用 byte 数组作为 Map 的 key
Mac virtualbox k8s通过yaml创建pod_解决k8s无法通过svc访问其他节点pod的问题
当透过其他pod访问该svc时(使用命令k exec kubia-nwjcc -- curl http://10.98.41.49),出现了只能访问到和自己同处于一个节点的pod的问题,访问到其他节点上的pod时会出现command terminated with exit code 7的问题,如下:
用户1212940
2021/12/06
1.2K0
java笔记–Map的用法
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
全栈程序员站长
2022/09/17
7870
java笔记–Map的用法
数据结构思维 第十章 哈希
在本章中,我定义了一个比MyLinearMap更好的Map接口实现,MyBetterMap,并引入哈希,这使得MyBetterMap效率更高。
ApacheCN_飞龙
2022/12/01
7000
通过k-means进行图像量化压缩--python实现
图像读取完我们获取到的其实是一个width*height的三维矩阵(width,height是图片的分辨率)
Awesome_Tang
2018/09/11
1.5K0
通过k-means进行图像量化压缩--python实现
Java框架类集结构-底层分析
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
xbhog
2021/11/15
4590
Java集合框架详述之Map集合
前言 Map接口的层次结构图: Map集合概述 Map与Collection无继承关系。 Map集合以Key和Value的方式存储数据。(键值对) Key和Value是引用数据类型。 Key和Value存储对象的内存地址。 所有Map集合的key特点:无序不可重复的。 Map集合的key和Set集合存储元素特点相同。 Map接口常用的方法: void clear() 清空集合中的元素 boolean containsKey(Object key) 判断Map中是否包含某个Key bo
百思不得小赵
2022/12/01
3000
Java集合框架详述之Map集合
JAVA–Map集合详解
特点:该集合存储键(key)值(value)对,一对一对往里存,而且要保证键(key)的唯一性。
全栈程序员站长
2022/09/01
6690

相似问题

当MyNestedClass<K>不是MyNestedClass<K>时返回MyNestedClass<K>?

23

Map.put(K,K),地图不是只有两个值吗?

15

将[(K,[V])]转到[(V,[K])]时的记忆障碍

23

std::map<K,V>::iterator是否实例化std::map<K,V>?

24

python语句:(k,v) for k,v

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文