Vector to DefaulTableModel

时间:2016-07-12 14:23:10

标签: java jtable deserialization

我有一个serilize文件,它保存了Jtable的DataVector。当我想反序列化它会抛出一个错误,告诉我Vector不能被转换为默认的tableModel。

这里是序列化方法:

fileOut.writeObject(model2.getDataVector()); //I save just the Data Vector.

这里是反序列化过程:

ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/Users/Harry/Desktop/clients.txt"));
      DefaultTableModel dtm = (DefaultTableModel)in.readObject();
      JTable table = new JTable(dtm);

错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Vector cannot be cast to javax.swing.table.DefaultTableModel

如何从向量转换为默认表模型以将数据向量反序列化回我的Jtable?

1 个答案:

答案 0 :(得分:0)

一般来说,你有三个选择:

  1. 序列化整个DefaultTableModel。这对于短期应用程序是可以的,但您不应该依赖它作为长期存储数据的一致机制。
  2. 序列化数据Vector以及列数和列名。在阅读器端反序列化此数据,并使用DefaultTableModel构造函数构造新的DefaultTableModel(Vector, Vector)。请注意,如果您在反序列化期间已经知道列名称,则无法通过网络传递此数据。
  3. 实现您自己的TableModel,它包装了您的Serializable数据项的基础List<T>。这将是我的首选。