Sauvegarder les donnees d'un tableau [Résolu]

TIEMYAC - 12 oct. 2017 à 18:11 - Dernière réponse :  TIEMYAC
- 16 oct. 2017 à 11:15
Bonjour,
SVP j'ai besoin d'un code qui me permet de sauvegarder les donnees de mon tableau dinamique dans un fichier texte et de les récuperées au prochain lancement du programme. je vous en serais reconnaissant pour votre aide
Afficher la suite 

8 réponses

Répondre au sujet
KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - Modifié par KX le 12/10/2017 à 18:50
0
Utile
Bonjour,

Regarde les méthodes Path Files.write(Path, Iterable<String>)
et List<String> Files.readAllLines(Path) du package java.nio.file.*

Exemple :

Path path = Paths.get("C:/test.txt");
Files.write(path, Arrays.asList("a", "b"));
System.out.println(Files.readAllLines(path)); // [a, b]

La confiance n'exclut pas le contrôle
Commenter la réponse de KX
TIEMYAC 3 Messages postés jeudi 12 octobre 2017Date d'inscription 13 octobre 2017 Dernière intervention - 12 oct. 2017 à 18:56
0
Utile
1
merci man!
ce que je savoir c'est si je doit créer une classe à part pour cette methode oubien créer la methode ma classe fenetre.
merci pour la comprehension
KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 12 oct. 2017 à 19:10
Tu fais ce que tu veux... pour 3 lignes de code ça change rien.
Commenter la réponse de TIEMYAC
TIEMYAC 3 Messages postés jeudi 12 octobre 2017Date d'inscription 13 octobre 2017 Dernière intervention - 13 oct. 2017 à 09:51
0
Utile
1
Slt KX,
merci pour tes reponses;
au faite je ne maitrise vraiment pas la chose, voilà ma classe fenetre:
  
public class Fenetre extends JFrame {

private Model modele = new Model();
private JTable tableau;



public Fenetre() {
super();

this.setTitle("CORE");
this.setSize(1500, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tableau = new JTable(modele);
tableau.setAutoCreateRowSorter(true);




getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
JPanel boutons = new JPanel();

boutons.add(new JButton(new AddAction()));
boutons.add(new JButton(new RemoveAction()));

getContentPane().add(boutons, BorderLayout.SOUTH);


}
public static void main(String[] args) {
Fenetre fen = new Fenetre();
fen.setVisible(true);

}

private class AddAction extends AbstractAction {
private AddAction() {
super("Ajouter");
}

public void actionPerformed(ActionEvent e) {

modele.addSource(new Source("", "", "", "","","","","",""));
}
}

private class RemoveAction extends AbstractAction {
private RemoveAction() {
super("Supprimmer");
}

public void actionPerformed(ActionEvent e) {
int[] selection = tableau.getSelectedRows();

for(int i = selection.length - 1; i >= 0; i--){
JOptionPane jop3 ;
jop3 = new JOptionPane();
jop3.showMessageDialog(null, "VOUS NE POUREZ PLUS RECUPERE CES INFORMATIONS APRES SUPPRESSION", "ATTENTION", JOptionPane.ERROR_MESSAGE);

modele.removeSource(selection[i]);
}
}
}

}

merci de bien vouloir m'aider
KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 13 oct. 2017 à 13:08
Quitte à me donner du code, donne le moi complet !

A priori les données que tu veux enregistrer dans ton fichier sont stockés dans la classe Model que tu mets dans ta JTable mais je n'ai pas ce code...
Commenter la réponse de TIEMYAC
TIEMYAC 3 Messages postés jeudi 12 octobre 2017Date d'inscription 13 octobre 2017 Dernière intervention - Modifié par TIEMYAC le 13/10/2017 à 13:16
0
Utile
2
voici ma classe modele:

public class Model extends AbstractTableModel {
private final List<Source> sources = new ArrayList<Source>();

private final String[] entetes = {"SIT ","NO ","DATE", "HEURE ", "DATE ", "HEURE ", "DATE ","HEURE ", "TEMPS "};

public Model() {
super();

sources.add(new Source("", "", "", "", "","","","",""));
sources.add(new Source("", "", "","", "","","","",""));
sources.add(new Source("", "", "","", "","","","",""));

}

public int getRowCount() {
return sources.size();
}

public int getColumnCount() {
return entetes.length;
}

public String getColumnName(int columnIndex) {
return entetes[columnIndex];
}

public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0:
return sources.get(rowIndex).getKom();
case 1:
return sources.get(rowIndex).getNir();
case 2:
return sources.get(rowIndex).getCot();
case 3:
return sources.get(rowIndex).setHor();
case 4:
return sources.get(rowIndex).getSp();
case 5 :
return sources.get(rowIndex).getHh();
case 6:
return sources.get(rowIndex).getDh();
case 7:
return sources.get(rowIndex).getDd();
case 8:
return sources.get(rowIndex).getTt();
default:
return null;
}
}

@Override
public Class getColumnClass(int columnIndex){
switch(columnIndex){
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return String.class;
case 4 :
return String.class;
case 5:
return String.class;
case 6:
return String.class;
case 7:
return String.class;
default:
return Object.class;
}
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if(aValue != null){
Source source = sources.get(rowIndex);
switch(columnIndex){
case 0:
source.setKom((String)aValue);
break;
case 1:
source.setNir((String)aValue);
break;
case 2:
source.setCot((String)aValue);
break;
case 3:
source.setHor((String)aValue);
break;
case 4:
source.setSp((String)aValue);
break;
case 5:
source.setHh((String)aValue);
case 6:
source.setDh((String)aValue);
case 7:
source.setTt((String)aValue);
}
}
}

public void addSource(Source source) {
sources.add(source);

fireTableRowsInserted(sources.size() -1, sources.size() -1);
}

public void removeSource(int rowIndex) {
sources.remove(rowIndex);

fireTableRowsDeleted(rowIndex, rowIndex);
}

aussi ma classe source:
 public class Source {
private String nir;
private String kom;
private String cot;
private String hor;
private String sp;
private String hh;
private String dh;
private String dd;
private String tt;
public Source(String nir, String kom, String cot, String hor, String sp, String hh, String dh, String dd, String tt) {
super();

this.nir = nir;
this.kom = kom;
this.cot = cot;
this.hor = hor;
this.sp = sp;
this.hh = hh;
this.dh = dh;
this.dd = dd;
this.tt = tt;
}

public String getNir() {
return nir;
}

public void setNir(String nir) {
this.nir = nir;
}

public String getKom() {
return kom;
}

public void setKom(String kom) {
this.kom = kom;
}

public String getCot() {
return cot;
}

public void setCot(String cot) {
this.cot = cot;
}

public String setHor() {
return hor;
}

public void setHor(String hor) {
this.hor = hor;
}

public String getSp() {
return sp;
}

public void setSp(String sp) {
this.sp = sp;
}

public String getHh() {
return hh;
}

public void setHh(String hh) {
this.hh = hh;
}
public String getDh() {
return dh;
}

public void setDh(String dh) {
this.dh = dh;
}
public String getDd() {
return dd;
}

public void setDd(String dd) {
this.dd = dd;
}
public String getTt() {
return tt;
}

public void setTt(String tt) {
this.tt = tt;
}
}
KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 14 oct. 2017 à 15:24
Bonjour,

Dans ton code, tu changes le constructeur de Model comme ceci :

private final List<Source> sources;

public Model() {
    sources = loadFromFile();
}

Et à la fin de tes 3 méthodes
setValueAt
,
addSource
et
removeSource
tu ajoutes l'appel à la méthode
saveToFile(sources)
.

Tu peux implémenter les deux méthodes loadFromFile/saveToFile comme tu veux, par exemple avec de la sérialisation.

Pour cela il faut que tu modifies la classe Source comme ceci :

public class Source implements Serializable {

    private static final long serialVersionUID = 1L;

Et les deux méthodes seraient comme ceci ;

private static final File datasFile = new File("data.ser").getAbsoluteFile();

private static void saveToFile(List<Source> datas) {
    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(datasFile))) {
        oos.writeObject(datas);
        System.out.println("Data save to file " + datasFile);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@SuppressWarnings("unchecked")
private static List<Source> loadFromFile() {
    List<Source> datas;
    try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(datasFile))) {
        datas = (List<Source>) ois.readObject();
        System.out.println("Data load from file " + datasFile);
    } catch (Exception e) {
        e.printStackTrace();
        datas = new ArrayList<>();
        datas.add(new Source("", "", "", "", "", "", "", "", ""));
        datas.add(new Source("", "", "", "", "", "", "", "", ""));
        datas.add(new Source("", "", "", "", "", "", "", "", ""));
    }
    return datas;
}
TIEMYAC > KX 15086 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 11 décembre 2017 Dernière intervention - 16 oct. 2017 à 11:15
Merci beaucoup KX t'es un sauveur.
ton code a resolut mon problème.
Commenter la réponse de TIEMYAC

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.