我想从我的JTable
序列化一个模型,不幸的是我得到了NotSerializableException
。
我的所有字段都是Serializable
,我无法理解这里的问题在哪里。
public class Sauvegarde extends AbstractAction implements Serializable {
private static final long serialVersionUID = 1L;
public DefaultTableModel model;
public Sauvegarde(String string) {
super(string);
}
@Override
public void actionPerformed(ActionEvent e) {
sauve_actionPerformed(e);
System.exit(0);
}
public void sauve_actionPerformed(ActionEvent e) {
this.model = Grille.dfm;
try {
// Serialisation
FileOutputStream fos = new FileOutputStream("sauve.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(model);
oos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
这是我创建JTable和模型的类:
String[] columnTitles = { "A", "B", "C", "D", "E"};
String[] cellulesVide = { "", "", "", "", ""};
String[][] rowData = new String[nombreDeLignes][5];
dfm = new DefaultTableModel(columnTitles,0);
//table.setCellSelectionEnabled(true);
for (int i = 0 ; i < nombreDeLignes ; i++)
{
dfm.addRow(cellulesVide);
}
table = new JTable(dfm) {
答案 0 :(得分:1)
没有魔力。
您应该检查对象层次结构中的所有类及其字段。 所有字段和类都应该是Serializable或primitive。
父可能不是可序列化的,但它必须具有默认构造函数。
上述条件属实,应该有效。
答案 1 :(得分:0)
某处你直接或间接拥有一个类型为Constructor的非瞬态数据成员,它不是Serializable,正如异常所说。找到它并使其成为瞬态或消除它。构造函数不是可序列化的。