Salut !
J'ai un problème avec la sérialisation; je vous donne le code et vous explique ensuite :
Et pour info :
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 public class Fichier { private Placement sudomodele; private Jeu jeumodele; public Fichier(Placement smodele,Jeu jmodele) { this.sudomodele = smodele; this.jeumodele = jmodele; } public void ouverturet() throws IOException{ JFileChooser jfc=new JFileChooser("."); jfc.setMultiSelectionEnabled(false); int retour = jfc.showOpenDialog(null); if(retour == JFileChooser.APPROVE_OPTION) { File inputFile = new File(jfc.getSelectedFile().getName()); Scanner sc = new Scanner(inputFile).useDelimiter("\n"); jeumodele.nouveaujeu(); sudomodele.initialisationGrille(sc); } } public void ouverturej() throws IOException{ jeumodele.nouveaujeu(); try { FileInputStream fichier = new FileInputStream("sudomi.jeu"); ObjectInputStream ois = new ObjectInputStream(fichier); sudomodele = (Placement) ois.readObject(); } catch (java.io.IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } sudomodele.notifyObservers(); } public void sauvegarde(){ try { FileOutputStream fichier = new FileOutputStream("sudomi.jeu"); ObjectOutputStream oos = new ObjectOutputStream(fichier); oos.writeObject(sudomodele); oos.flush(); oos.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } }
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 public abstract class Sudoku { protected Macase[][] grillep= new Macase [9][9]; protected int chiffrechoisi=0; protected boolean [] tabmessage = new boolean [4]; protected boolean jeudemarre; protected boolean nouveaujeu; public Sudoku(){ for(int i=0;i<9;i++){ for(int j=0;j<9;j++){ this.grillep[i][j]=new Macase(); } } for (int i=0;i<tabmessage.length;i++) { tabmessage[i]=false; } this.jeudemarre=false; } ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Placement extends Sudoku implements java.io.Serializable{ private static final long serialVersionUID = 3032191156608661892L; ... }Voilà ! Je ne vous donne pas les autres classes, c'est sans intéret ...
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 public class Pgrmsudoku extends JFrame{ private static final long serialVersionUID = 6787164115803472272L; Placement sudoku = new Placement(); Jeu jeu = new Jeu(sudoku); PanelVue1 pVue1 = new PanelVue1(sudoku); PanelVue2 pVue2 = new PanelVue2(sudoku,jeu); Fichier fichier = new Fichier(sudoku,jeu); Menu menuBar = new Menu(sudoku,fichier,jeu); public static void main(String args[]) { try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } Pgrmsudoku f = new Pgrmsudoku(); f.setPreferredSize(new Dimension(900,700)); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setVisible(true); } public Pgrmsudoku(){ this.setTitle("Jeu du Sudoku"); this.getContentPane().add(pVue1, BorderLayout.EAST); this.getContentPane().add(pVue2, BorderLayout.WEST); this.setJMenuBar(menuBar); } }
En fait, ce sont les méthodes ouverturej et sauvegarde de la classe Fichier qui me causent problème. Le programme tourne bien... mais après une ouverture, je ne retrouve rien de ce qui est censé avoir été enregistré dans le fichier...
Où est-ce que je me suis fourvoyé ?...
Merci d'avance !
Partager