Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [serialisation] JTABLE pb [ Archives / Divers ] (bidani)

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é 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 JTABLE POUR plusiuer tables [ par tchoo ] Bonjourmerci d'avance pour réponse Mon probleme est le suivantj'ai une base de donnée qui contient plusieurs tables,pour afficher mes tables j'ai cree Rafraichissements par seconde [ par Abralou ] <!-- @page { size: 21cm 29.7cm; margin: 2cm } comment mettre une action sur un bouton [ par azazelle ] Bonsoir je voudrais soliciter une petite aide de la part de quelqu'un car je ne trouve vraiment pas la solution.Voila en fait je veux creer une fenetr JTable- clic sur image [ par thassa ] bonjour,Le code ci-dessous affiche un tableau contenant des images.le problème est que si je clique pour la premiere fois sur l'image pour afficher un JTable + Controller [ par adrienr11vdv ] Bonjour à tous , je développe une appli avec des JTable mais je rencontre quelques soucis! j'utilise une classe, connection a la bdd, une classe cont Problème de repaint de frame pour un casse brique [ par jpattac ] Bonjour je suis débutant en java et j'ai un casse brique à faire pour un projet d'informatique.Pour la première étape je dois juste faire une barre qu camera ipaffichage camera ip avec la jmf [ par stage3 ] bonjour, j'ai toujour un probleme avec l'affichage de ma camera dans mon appli java... j'arrive à afficher une video .mpg presente sur mon ordinateur


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.