【发布时间】:2013-01-03 19:02:37
【问题描述】:
我想从我的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) {
【问题讨论】:
-
答案就在问题中:你的模型引用了 java.lang.reflect.Constructor 的一个实例,而这个类是不可序列化的。
-
Désolé je ne comprend pas, DefaultTableModel est une classe Serializable d'après la doc ...
-
表模型存储项目模型的向量。您在模型中存储什么类型的项目?你确定那些是正确可序列化的吗?也许发布一些您用于项目模型的类的代码?
-
我只是将字符串存储在我的模型中。我受到此链接的启发:javafr.com/codesource.aspx?ID=24694
-
如果你只存储字符串,你不会得到异常。向我们展示创建和填充模型的代码,以及异常的完整堆栈跟踪。并始终在 finally 块中关闭您的流。
标签: java swing serialization stream jtable