java - 序列化 JTextPane 的文档是否会序列化 JTextPane 的监听器?

标签 java swing serialization listener jtextpane

我正在序列化 JTextPaneDocument 以便将其样式文本保存到数据库中。我有一个 caretListener 附加到 JTextPane,我想知道序列化此 Document 是否也会序列化 caretListener 。我需要知道这一点的原因是因为自定义 caretListener 类包含 JComboBox 并且当我尝试序列化时出现以下异常:

java.io.NotSerializableException: com.apple.laf.AquaComboBoxUI

我怀疑如果文档包含 caretListener,那就是此异常的原因。

这是序列化它的代码:

DefaultStyledDocument doc = (DefaultStyledDocument) getCellEditor().getCellEditorValue();
doc.setDocumentFilter(null);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject((DefaultStyledDocument) doc);
oos.flush();

byte[] data = bos.toByteArray();

oos.close();
bos.close();

然后我只是将数据保存在数据库中。

附录

这是自定义插入符监听器:

MyTextPane textpane = new MyTextPane();
textpane.addCaretListener(new caretListener());
public class caretListener implements CaretListener {

    MyTextpane textArea;
    JToggleButton boldbutton;
    JToggleButton italicbutton;
    JToggleButton underlinebutton;
    JComboBox fontscomboBox;
    JComboBox fontSizecombobox;
    // Methods
    ...
}

最佳答案

Document 通过 Writer 序列化并通过 Reader 反序列化。使用 JTextPanegetEditorKit() 以及该套件的写入/读取方法。

关于java - 序列化 JTextPane 的文档是否会序列化 JTextPane 的监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631150/

相关文章:

java - JXTreeTable 模型不允许使用 insertNodeInto()

java - 重置游戏循环/重新启动游戏 java swing

java - 粗体标题边框

encoding - 序列化和编码有什么区别?

Java:我可以使用 JAXB 序列化字符串列表吗?

java - 用日期强制 TimSort IllegalArgumentException

java - 从另一个类传递方法

c# - WCF:序列化和反序列化泛型集合

java.net.ConnectException 消息 : Connection timed out: connect

java - 与 Maven 父模块中的 Checkstyle 和 PMD 配置的区别