2

我正在序列化 aJTextPaneDocument将其样式文本保存到数据库中。我有一个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
    ...
}
4

1 回答 1

2

Document通过序列化Writer和反序列化Reader。使用套件的JTextPane'sgetEditorKit()和 write/read 方法。

于 2012-11-29T17:55:32.613 回答