IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[debutant][serialisation ][jtable]pb de sauvegarde


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut [debutant][serialisation ][jtable]pb de sauvegarde
    salut ,

    je me lance dans la serialisation j'ai fais un petit test (pour serialiser une JTABLE) mais j'ai encore des problemes , apres la serialisation qd je redemmarre j'ai une nouvelle table , il y a de forte chance que ça soit a cause du "model" de la table voila mon code (le but est de seaialiser une jtable) et pour le moment je n'y arrive pas donc si quelqu'un s'y connait se srait sympa de me mettre sur le droit chemin
    MERCI§§
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    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 BoxTest extends JFrame implements Serializable
    {
     
    private JTable table;
    JPanel pann = new JPanel(new GridLayout(0,1));
    JPanel gestion = new JPanel(new GridLayout(1,3));
     
    public BoxTest()
    {
     
    final DefaultTableModel model = new DefaultTableModel(0,1);
     
     
     
    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 = (JTable) ois.readObject();
    table.setModel(model);
    ois.close();
    } else {
     
    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);
     		            }
                });
     
     
    Ajouter.addActionListener(new ActionListener() {
    		  			      public void 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);
     
     
    		            }
                });
     
    Supprimer.addActionListener(new ActionListener() {
    		  			      public void actionPerformed(ActionEvent e){
     
    						int [] selected = table.getSelectedRows();
    						for (int i = selected.length - 1; i >= 0; i--)
    						model.removeRow(selected[i]);
    						}
     
     
                });
     
     
    Valider.addActionListener(new ActionListener() {
    							public void actionPerformed(ActionEvent e){
    								try {
    								//Serialisation
    								FileOutputStream fos = new FileOutputStream("sauve.tmp");
    								ObjectOutputStream oos = new ObjectOutputStream(fos);
    								oos.writeObject(table);
    								oos.close();
    								System.exit(0);
    								} catch (IOException e1) {
    									 e1.printStackTrace();
    								}
    								System.exit(0);
     
     
    						       }
    						        });
     
     
     
     
    }
     
     
    public static void main(String[] args)
    {
    BoxTest test = new BoxTest();
    test.pack();
    test.setVisible(true);
     
    }
     
    }

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Ne devrais tu pas sérialiser le "model "plutot que la table (car c'est lui qui contient les données)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    j'ai fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    public BoxTest()
    {
     
    final DefaultTableModel model = null;
     
     
     
    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 = (JTable) ois.readObject();
    //table.setModel(model);
    //final DefaultTableModel model;
    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();
    		  }
    le pb c que mon model est decalré final donc doit etre initialisé des le debut et le fait de le deseerialiser n'est pas autorisé(reafectation de final!!!) est ce que quelqu'un voit comment faire autrement

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Et l'intérêt du final :

    pourquoi ne pas enlever le final

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    j'en ai besoin pour là par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Supprimer.addActionListener(new ActionListener() { 
                           public void actionPerformed(ActionEvent e){ 
     
                      int [] selected = table.getSelectedRows(); 
                      for (int i = selected.length - 1; i >= 0; i--) 
                      model.removeRow(selected[i]); //ici
                      } 
     
     
                });

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Supprimer.addActionListener(new ActionListener() { 
                           public void actionPerformed(ActionEvent e){ 
                      int [] selected = table.getSelectedRows(); 
                      for (int i = selected.length - 1; i >= 0; i--) 
                      model.removeRow(selected[i]); //ici 
                      } 
                });
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Supprimer.addActionListener(new ActionListener() { 
                           public void actionPerformed(ActionEvent e){ 
               supprimer_actionPerformed(ActionEvent e);
                   }
    });
    et une nouvelle méthode dans la classe BoxTest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    supprimer_actionPerformed(ActionEvent e){ 
          int [] selected = table.getSelectedRows(); 
          for (int i = selected.length - 1; i >= 0; i--) 
             model.removeRow(selected[i]); //ici 
    }

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    mon nouveau code est le suivant et je n'arrive tjrs pas a serialiser pire plus de possibilite d'ajouter ou de supprimer des lignes si quelqu'un voit pourquoi merci de repondre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    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 BoxTest extends JFrame implements Serializable
    {
     
    private JTable table;
    JPanel pann = new JPanel(new GridLayout(0,1));
    JPanel gestion = new JPanel(new GridLayout(1,3));
    DefaultTableModel model;
     
    public BoxTest()
    {
     
    DefaultTableModel model;// = new DefaultTableModel(0,1);
     
     
     
    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 = (JTable) ois.readObject();
    table.setModel(model);*/
    table = new JTable();
    model = (DefaultTableModel) ois.readObject();
    table.setModel(model);
     
     
    ois.close();
    } else {
     
    /*table = new JTable();
    table.setModel(model);*/
     
    model = new DefaultTableModel(2,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);
     		            }
                });
     
     
    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);
     
     
    						       }
    						        });
    }
     
    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);
    }
     
    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)
    {
    BoxTest test = new BoxTest();
    test.pack();
    test.setVisible(true);
     
    }
     
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    c encore moi le boulet maintenant ça marche j'avais juste declare deux fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public BoxTest()
    {
     
    //DefaultTableModel model;
    un grand merci pour FNOBB

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    salut ,
    (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
    voila mon code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    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);
     
    }
     
     
    }

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    je n'ai toujours pas trouvé de solutions pour le probleme :
    si quelqu'un sait je suis preneur
    merci

  11. #11
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Et quelle est l'erreur ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    je ne peut pas serialiser quand j'edite les lignes de la table!!! (sauf dans le cas que j'ai expliqué :

    (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 tu peux compiler chez toi tu verra mieux ce qui se passe

  13. #13
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    ce qu'il se passe c'est que lorsque que tu édite une ligne , avant de sauvegarder, il faut que la modification soit prise en compte (en faisant "entrée" par exemple alors le model mais à jour ses données (sorte de commit) et tu peux sérialiser le model

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    merci et comment on peut faire "le commit " autrement qu'en tapant sur ENTREE?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    en fait il suffit d'enlever le focus avant de serialiser mais comment je sais pas quelqu'un sait comment enlever le focus des cases d'une JTABLE j'ai utilisé

    mais ça fait rien

    merci

  16. #16
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    désolé, mais comme je ne suis pas à plein temp sur ton problème (j'ai les miens aussi ) je vais dans un premier temp essayer de te donner des directions pour chercher :

    il faudrait que le bouton que le bouton valider vérifie avant que le tableau n'est pas en mode édition (il y a dans la JTable une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public boolean isEditing() Returns true if a cell is being edited.
    ) et que si la table est en mode édition lancer sur la table un appel à la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void tableChanged(TableModelEvent e)
    en utilisant comme evenement quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableModelEvent(source, table.getSelectedRow() );           //  Row "table.getSelectedRow()" changed
    afin que celle-ci fasse la validation des modifications et ceci avant de faire la sérialisation ....


    Bon courage .

  17. #17
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    je pense avoir trouvé la solution à ton problème .....

    avant de sauvegarder il faut vérifier que la table n'est pas en edition ... si c'est le cas il faut stopper l'édition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void sauve_actionPerformed(ActionEvent e) {
    	if(table.isEditing()){
    		if (table.getCellEditor() != null) {
    	           table.getCellEditor().stopCellEditing();
    	   }
    	}
       try { 
             //Serialisation 
             FileOutputStream fos = new FileOutputStream
    .... la fin de ton code

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    salut a tous,

    il faut dire que je ne sais plus ou j'en suis le probleme persiste encore si je serialise le model de la table alors que le curseur est encore dans une cellule de la JTABLE ça ne fonctionne pas alors ma question est comment oliger les utilisateur a tapez sur ENTREE AVANT DE VALIDEZ(serialiser) ???

    JE SUIS COMPLETEMENT SLASH

  19. #19
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    la solution est dessus

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Par défaut
    ecoute franchement chapo mille merci et bonne chance avec tes problemes

    MERCI

    s'etait bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(table.isEditing()){
    							      if (table.getCellEditor() != null) {
    							              table.getCellEditor().stopCellEditing();
    							      }
                                   }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DEBUTANT][Serialisation] Flash 9 et java
    Par magnus2005 dans le forum Flash
    Réponses: 5
    Dernier message: 27/04/2007, 12h28
  2. <debutant> probleme JTable
    Par melodie53 dans le forum Composants
    Réponses: 1
    Dernier message: 28/07/2006, 00h44
  3. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  4. [Debutant]erreur lors de la sauvegarde d un code.
    Par Mr_Chut dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/04/2004, 19h42
  5. [debutant]Jpane et Jtable
    Par noOneIsInnocent dans le forum Débuter
    Réponses: 4
    Dernier message: 22/03/2004, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo