Bonjour,

J'ai une JFrame dans laquelle de nombreux elements sont disposés (JMenu, JMenuItem, etc...).

J'ai mis à disposition une fonctionnalité de sauvegarde de la "configuration" de mon IHM afin d'éviter d'avoir à tout refaire, grâce à la sérialisation.

La sérialisation marche bien et la désérialisation aussi, mais lorsque je veux rafraîchir mon IHM avec l'ancienne config., je n'ai aucun changements (le titre de mon IHM ne change pas et la couleur de mon onglet JTabbedPane aussi...)

Voici ce que je fais :

Serialisation :

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
@Override
public void actionPerformed(ActionEvent e) 
{
	FileOutputStream fos = null;
	ObjectOutputStream oos = null;
 
	try 
	{
		fos = new FileOutputStream(new File("E:\\config.backup"));
		oos = new ObjectOutputStream(fos);
		oos.writeObject(myGui);
		System.out.println("objet serialise avec succes !");
	} 
	catch (FileNotFoundException e1) 
	{
		e1.printStackTrace();
	}
        catch (IOException ioe) 
	{
		// TODO Auto-generated catch block
		ioe.printStackTrace();
		System.out.println("Message = "+ioe.getMessage()+"\n"+ioe.getCause());
	}
	finally
	{
	        try
                {
			oos.close();
			fos.close();
		} 
                catch (IOException e1) 
                {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}			
	}
}
Déserialisation :

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
@Override
public void actionPerformed(ActionEvent e) 
{
	FileInputStream fis = null;
	ObjectInputStream ois = null;
 
	try 
	{
	        fis = new FileInputStream(new File("E:\\config.backup"));
		ois = new ObjectInputStream(fis);
 
		System.out.println("AVANT DEserialisation (AVANT chargement), titre appli = "+myGui.getTitle());
		myGui.getMainFrame().invalidate();
		myGui = (GUI) ois.readObject();
		System.out.println("objet DEserialise avec succes !");
		myGui.getMainFrame().validate();
                myGui.getMainFrame().repaint();
		System.out.println("APRES DEserialisation (APRES chargement), titre appli = "+myGui.getTitle());
	} 
	catch (FileNotFoundException e1) 
	{
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	catch (IOException ioe) 
	{
		// TODO Auto-generated catch block
		ioe.printStackTrace();
	}
	catch (ClassNotFoundException ioe) 
	{
		// TODO Auto-generated catch block
		ioe.printStackTrace();
	}
	finally
	{
		try 
                {
			ois.close();
			fis.close();
		}
                catch (IOException e1) 
                {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}			
	}
}
Je précise que je fais ça dans un controleur car j'éssaie d'utiliser au max. l'architecture M-V-C.

Je précise également que cela ne vient pas de la déserialisation car lorsque j'ajoute :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
myGui.setVisible(true); // Mis en fin de déserialisation
la nouvelle fenêtre apparaît nickel et je retrouve bien les bons attributs :
AVANT DEserialisation (AVANT chargement), titre appli = IHM NON SAUVEGARDEE
objet DEserialise avec succes !
APRES DEserialisation (APRES chargement), titre appli = IHM SAUVEGARDEE
Je pense donc que mon problème porte donc dans l'utilisation des méthodes : invalidate(), validate(), revalidate(), paint()...

Merci d'avance pour votre aide et désolé pour la longueur de mon post