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[]>
?