salut,
j'arrive a serialiser une jtable mais le petit probleme suibvant apparait :
(la serialisation marche si je rajoute ou supprime des lignes sans les editer)
ça plante quand j'edite une ligne et sauvegarder juste aprés
mais quand j'edite une ligne et avant de sauvegarder j'en supprime une autre ça fonctionne
etant debutant en java et 1ere utilisation de JTABLE je ne sais pas que ce qu'il, faut faire pour prendre en compte l'edition des champs
si vous voyez ce qu'il faut faire faites moi en part
MERCI...
import javax.swing.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.TitledBorder;
import java.text.*;
import javax.swing.table.*;
public class Test extends JFrame implements Serializable
{
public JTable table;
JPanel pann = new JPanel(new GridLayout(0,1));
JPanel gestion = new JPanel(new GridLayout(1,3));
public DefaultTableModel model;
public Test()
{
JButton Ajouter = new JButton("Ajouter");
JButton Supprimer = new JButton("Supprimer");
JButton Valider = new JButton("Valider");
pann.setPreferredSize(new Dimension(500, 500));
try {
File file = new File("sauve.tmp");
//deserialisation
if(file.exists() ) {
FileInputStream fis = new FileInputStream("sauve.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
table = new JTable();
model = (DefaultTableModel) ois.readObject();
table.setModel(model);
ois.close();
} else {
model = new DefaultTableModel(0,1);
table = new JTable();
table.setModel(model);
}
}catch(Exception e)
{
e.printStackTrace();
}
pann.add(table);
getContentPane().add("Center",pann);
gestion.add(Ajouter);
gestion.add(Supprimer);
gestion.add(Valider);
setSize(600,400);
getContentPane().add("South",gestion);
table.setPreferredScrollableViewportSize(new Dimension(500, 400));
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
//System.exit(0);
setVisible(false);
}
});
Ajouter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
ajouter_actionPerformed(e);
}
});
Supprimer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
supprimer_actionPerformed(e);
}
});
Valider.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
sauve_actionPerformed(e);
// System.exit(0);
setVisible(false);
}
});
}
public void supprimer_actionPerformed(ActionEvent e){
int [] selected = table.getSelectedRows();
for (int i = selected.length - 1; i >= 0; i--)
model.removeRow(selected[i]);
}
public void ajouter_actionPerformed(ActionEvent e){
/* Integer[] newCells = new Integer[model.getColumnCount()];
for (int i = 0; i < newCells.length; i++)
newCells[i] = new Integer((i + 1)
* (model.getRowCount() + 1));
model.addRow(newCells);*/
String [] data = new String [model.getColumnCount()];
data[0] = "http://";
model.addRow(data);
}
public void sauve_actionPerformed(ActionEvent e) {
try {
//Serialisation
FileOutputStream fos = new FileOutputStream("sauve.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(model);
oos.close();
System.exit(0);
} catch (IOException e1) {
e1.printStackTrace();
}
}
public static void main(String[] args)
{
Test test = new Test();
test.pack();
test.setVisible(true);
}
}