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

Java Discussion :

Serialization d'interface graphique


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut Serialization d'interface graphique
    Bonjour,

    Je cherche à stocker une sorte de fichier projet rapidement, pour mémoriser l'état de la fenêtre de mon application. ( dans ma classe héritant de JFrame, je fais grossièrement un writeObject(this) )

    J'ai testé la sérialization et désérialization avec un nom statique ne faisant pas intervenir le choix de l'utilisateur, tout marchait impec.

    J'ai ensuite ajouté un JFileChooser pour pouvoir paramétrer le nom de projet à l'enregistrement et l'ouverture, et ça ne marche plus.
    J'obtiens l'Exception NotSerializable pour la classe JFileChooser, pourtant au moment de la Serialization ce chooser est fermé !?

    J'ai essayé de faire une sous-classe de JFileChooser qui implémente Serializable mais rien à faire, toujours la même erreur.

    Je ne comprends pas pourquoi il cherche à serializer le chooser. Y a-t-il un moyen d'éviter sa sérialization? De le détruire? Je bloque...

    Merci pour les réponses à venir.

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut Ma méthode appelée pour l'enregistrement
    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
     
    	protected void saveProjectAsMenuItem_action(ActionEvent e)
    	{
    //		 opens the file chooser
    		JFileChooser fc = new JFileChooser(".");
    		fc.setFileFilter(new DaresProjectFilter());
    		fc.setDialogType(JFileChooser.SAVE_DIALOG );
    		fc.showSaveDialog(null);
    		File selectedFile = fc.getSelectedFile();
    		fc = null;
    		if (selectedFile != null && selectedFile.getName().endsWith(".rpj"))
    		{
    			System.out.println("Début enregistrement");
    			setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
     
    			try
    			{
    				//opening of output stream
    				FileOutputStream fos = new FileOutputStream(selectedFile);
     
    				// creation of object stream starting from output sream
    				ObjectOutputStream oos= new ObjectOutputStream(fos);
    				try
    				{
    					// sérialization : writing of binary data
    					oos.writeObject(this); 
    					// Emptying of the plug
    					oos.flush();
    				}
    				finally
    				{
    					//closing of streams
    					try
    					{
    						oos.close();
    					}
    					finally
    					{
    						fos.close();
    					}
    				}
    			}
    			catch(IOException ioe)
    			{
    				ioe.printStackTrace();
    			}
     
    			this.project = selectedFile;
    			this.saveSelectionMenuItem.setEnabled(true);
    			this.infoLabel.setText("Saved project : " + selectedFile.getName());
    			System.out.println("Fin enregistrement");
    			setCursor(null);
    		}
    	}

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut
    Personne? snif

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    1. Il est bizarre que tu aies une exception pour le JFileChooser ; il doit y avoir une autre raison.
    2. D'une façon générale il est déconseillé de sérialiser des objets graphiques, il est mieux de ne sérialiser que ce leur tient lieu de modèle.
    3. Si on veut quand même sérialiser des objets swing, alors il vaut mieux passer par le système du java.beans.XMLDecoder/Encoder.
    4. Par la serialisation style Serializable, si l'on veut éviter de sérialiser un attribut, il faut le présenter avec le mot clef transient : private transient String toto.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 120
    Par défaut
    Ok merci, je vais voir si je peux arranger quelque chose avec ça

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2004, 18h29
  2. interface graphique utilisateur, que faut-il utiliser?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/03/2004, 12h18
  3. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55
  4. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    Réponses: 6
    Dernier message: 29/08/2003, 10h20
  5. plugin interface graphique
    Par jocelyn dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 13/08/2003, 09h49

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