我正在序列化 aJTextPane
以Document
将其样式文本保存到数据库中。我有一个caretListener
附加的JTextPane
,我想知道是否序列化这个Document
序列化也是caretListener
如此。我需要知道这一点的原因是因为自定义 caretListener 类包含JComboBox
并且当我尝试序列化时出现以下异常:
java.io.NotSerializableException: com.apple.laf.AquaComboBoxUI
我怀疑如果 Document 包含 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();
然后我只是保存data
在数据库中。
附录
这是自定义插入符号侦听器:
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
...
}