2016-04-24 8 views
0

私は、Exと呼ばれるクラスのJTableからデータをシリアライズしてデシリアライズしようとしています。私が理解していないJtableとDefaultTableModelに関連する動作を得ています。 データコンテナとしてList<String[]>を使用していますが、デシリアライズの方法がわかりません。リストのシリアライズとデシリアライズ<String[]> JTable

public class MyTableListener implements TableModelListener 
{ 
    Ex x; 
    MyTableListener(Ex E) {x=E;} 
    public void tableChanged(TableModelEvent e) 
    { int row = e.getLastRow(); 
     int col = e.getColumn(); 
     String[] rowBuffer = x.Z1.get(row); 
     rowBuffer[col]=(String)x.data.getValueAt(row,col); 
    } 
} 

をし、mainメソッドで:ボタンを使用して呼ば

public class Ex implements Serializable { 
static List<String> S1 = new ArrayList<String>(); 
static List<String[]> Z1 = new ArrayList<String[]>(); 
... 
Ex 
{ 
for (int i = 0; i < 1; i++) {Z1.add(new String[] {(i+1)+"",((i+1)*10)+"",((i+1)*100)+""});} 
data = new DefaultTableModel(Z1.toArray(new Object[][] {}), S1.toArray()); 
tab = new JTable(data); 
... 
} 
} 

シリアライズとデシリアライズの方法は、この

public void Serializer(Ex caller) 
{ 
    try { 
    FileOutputStream fs = new FileOutputStream("Ser.ser"); 
    ObjectOutputStream os = new ObjectOutputStream(fs); 
    os.writeObject(caller); 
    os.flush(); 
    os.close(); 
    } catch (Exception e) {e.printStackTrace(); } 
} 

public void Deserializer() 
{ 
    Ex J = null; 
    try { 
    FileInputStream fis = new FileInputStream("Ser.ser"); 
    ObjectInputStream ois = new ObjectInputStream(fis); 
    J = (Ex) ois.readObject(); 
    ois.close(); 
    } catch (Exception e) { e.printStackTrace(); } 
    DefaultTableModel data2 = new DefaultTableModel(J.Z1.toArray(new Object[][] {}), J.S1.toArray()); 
    tab.setModel(data2); 
} 

MyTableListenerのように見えるが、このようになります

... 
Ex THIS = new Ex(); 
Tlistener = new MyTableListener(THIS); 
data.addTableModelListener(Tlistener); 
... 

缶どのように正しくデシリアライズするか指定してくださいList<String[]>

答えて

0

解決: 静的フィールドはシリアル化されません。

関連する問題