begin process at 2012 02 15 14:24:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Divers

 > 

[serialisation] JTABLE pb


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[serialisation] JTABLE pb

lundi 19 juillet 2004 à 13:25:13 | [serialisation] JTABLE pb

bidani

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);

}


}
lundi 19 juillet 2004 à 13:44:49 | Re : [serialisation] JTABLE pb

wargre

c quoi le message quand il plante?
lundi 19 juillet 2004 à 13:56:02 | Re : [serialisation] JTABLE pb

bidani

c'est :

noserializable Exception...reflect constructor et apparement il n'aime pas l'initialisation de mon model

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();//ICI!!!!!!!!!!!
table.setModel(model);
lundi 19 juillet 2004 à 14:07:04 | Re : [serialisation] JTABLE pb

wargre

Met un TableModel ca devrait le calmer
lundi 19 juillet 2004 à 14:17:34 | Re : [serialisation] JTABLE pb

bidani

il dit que c abstract et que je ne peux pas l'instancier !!!!!!!
lundi 19 juillet 2004 à 16:35:20 | Re : [serialisation] JTABLE pb

GodConan

En fait il n est pas tres judicieu de serializer un model ... ;o)
Utilise plutot la methode getData() pour en obtenir les données et ce sont les données que tu doit sérializer (enfin sauvegarder à l aide de la serialization ;o) héhé)
ensuite il ne te restera plus qu a rempliur ta table avec les donnee obtenu ...

Le gro prob qd tu write une class que tu ne conne pas bien ... c que tu ne peu pas tro predir le comportement de chacun de ses attribut ... certain peuvent etre "Transient " et ds ce cqs tu ne pourra en restituer la valeur par la serialization .... dc evite la serialization sur des class tro complex.... ;o) ...


++

GodConan
mardi 20 juillet 2004 à 08:44:29 | Re : [serialisation] JTABLE pb

bidani

en fait j'ai compris maintenant qu'il faut juste appuyer sur le ENTREE avant de Validez(il suffit d'enlever le curseur de la jtable avant de valider) pour que ça marche maintenant ce que je veux c un moyen d'empecher les utilisateur d'appuyez sur le bouton Validez tant que le curseur est dans une cellule de la Jtable?????????

quelqu'un sait comment on fait???

MERCI...........
mardi 20 juillet 2004 à 09:42:04 | Re : [serialisation] JTABLE pb

wargre

tu fait l'inverse: quand quelqu'un appuis sur valider, tu degages le curseur de la cellule (si il y en a un)
mardi 20 juillet 2004 à 09:44:07 | Re : [serialisation] JTABLE pb

bidani

Réponse acceptée !
salut pour ce qui on le meme problme que moi voila la solution*


avant de serialiser il faut faire

if(table.isEditing()){
if (table.getCellEditor() != null) {
table.getCellEditor().stopCellEditing();
}
}


voila


Cette discussion est classée dans : public, table, import, model, actionperformed


Répondre à ce message

Sujets en rapport avec ce message

Changer le nom de la colonne d'un JTable [ par Ombitious_Developper ] Salut :Voici un code pour créer un JTable avec des colonnes ayant des noms, mais ce dernier n'affiche rien :import javax.swing.*;import javax.swing.ta Comment faire pour [ par luffysansan ] éviter que les images ne changent de place à chaque fois que je reduit et re-agrandit la fenetre ? Quand je lance l'application les images ne s'affich JTable supprimer ligne [ par crazysetup ] Salut a tous, j'ai un problème et j'aimerais trouver la solution.J'ai créé une JTable avec un bouton ajouter qui ajoute des lignes vides et un autre s Problème de MVC [ par shark59112 ] Bonjour, Voici mon soucis, j'ai essayé de créer un petit compteur avec le modèle MVC mais j'ai l'impression que quand je clique sur mon bouton, mon c Probleme de collision map 2D [ par dadouvic ] Bonjour à tous et à toute ! Voili voilou, sa fais pas tellement de temps que je fais du Java, et je me suis dis que j'allais essayer de faire quelque Changer couleur image avec souris [ par moreelsc ] Bonjour, J'aimerais créer un petit programme simple: Je crée une fenêtre comportant une image (un simple rectangle rouge). J'aimerais via un MouseLis camera Axis [ par nesrine18 ] bonjour, c'est mon code qui sert à récupérer le flux video d'une camera Axis et l'afficher dans un jFrame.... pouvez vous m'aider maintenant pour fair caméra Axis [ par nesrine18 ] bonjour, c'est mon code qui sert à récupérer le flux video d'une camera Axis et l'afficher dans un jFrame.... pouvez vous m'aider maintenant pour fair Changer couleur image avec MouseListener [ par moreelsc ] Bonjour, J'ai crée une fenêtre contenant un rectangle rouge. J'aimerais que lorsque je clic avec ma souris le triangle devienne vert. Dans mon program image dans jFrame [ par nesrine18 ] bonjour, je veux mettre une image comme fond de mon jFrame,j'ai le code suivant,mais je veux que l'image ne couvre que la moitiée de mon jFrame..que d


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales