我正在序列化JTextPane
的{{1}},以便将其样式文本保存到数据库中。我有一个Document
附加到caretListener
,我想知道是否将此JTextPane
序列序列化为Document
。我之所以需要知道这一点,是因为自定义caretListener类包含caretListener
,并且在尝试序列化时出现以下异常:
JComboBox
我怀疑如果Document包含caretListener,那就是这个异常的原因。
以下是序列化它的代码:
java.io.NotSerializableException: com.apple.laf.AquaComboBoxUI
然后我只是将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();
保存在数据库中。
附录
这是自定义插入符听众:
data
答案 0 :(得分:2)
Document
通过Writer
序列化,并通过Reader
反序列化。使用JTextPane
的{{1}}以及套件的写入/读取方法。