Bonjour,

J'ai un problème avec la serialization et la deserialisation. J'ai une classe MaComponent qui etend de JComponent.

Je possède une classe MaFrame qui étend de JFrame et qui contient un attribut de type MaComponent :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public class MaComponent extends JComponent
{
...
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public class MaFrame extends JFrame {
 
private MaComponent mc;
 
}
J'ai bien évidemment plein d'autre classes. J'ai besoin de pouvoir sauvegarder (dans un fichier), l'état de la fenetre et de tout ce qui se passe à l'écran.

J'ai donc une méthode save qui enregistre mon object mc.

Problème : quand je veux charger ce fichier, je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.mc = (MaComponent) ois.readObject();
Si je lis des attributs de mc, ils s'affichent correctement (l'objet s'est bien chargé).

Problème : rien ne s'affiche à l'écran, même avec un this.mc.repaint();

Voici ma méthode load :

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
protected void load(){
		ObjectInputStream ois;
		try {
			ois = new ObjectInputStream(
					new BufferedInputStream(
							new FileInputStream(
									this.pathFile)));
 
			try {
				this.component = (MaComponent) ois.readObject();
				//System.out.println(this.component.attribut1.toString());
				this.component.repaint();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			} finally {
				ois.close();
			}
Je pense qu'il y a un problème de rafraichissement de la fenêtre car l'attribut 1 affiche bien ce qui avait été sauvegardé.

Une solution?

Merci