Bonjour,

J'ai enregistrer une JTable dans un fichier binaire et maintenant je souhaiterais l'ouvrir mais je n'y arrive pas. Bien sur dans mon application. Sa me dit qu'il ne trouve pas mon annee

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
public class Serialiser implements Serializable {
    /**
         * serialVersionUID
         */
	private static final long serialVersionUID = 1L;
	private static String fichier;
	public Serialiser(String fichier) {
		Serialiser.fichier = fichier;
	}
 
	public void serialiser(CalendarWeekViewer calendrier){
		try{
	        FileOutputStream  fout=new FileOutputStream(fichier);
	        // création d'un "flux objet" avec le flux fichier
	        ObjectOutputStream  oout=new ObjectOutputStream(fout);
	        oout.writeObject(calendrier);
	        System.out.println("Le planning a été sérialisé !");
	        oout.flush();
	        oout.close();
	        fout.close();
		}  catch(IOException ioe) {
		        ioe.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
25
26
27
28
29
30
public class Deserialiser implements Serializable{
 
	/**
         * 
         */
	private static final long serialVersionUID = 1L;
	private static File fichier;
	public Deserialiser(File fichier) {
		Deserialiser.fichier = fichier;
	}
 
	public String deserialiser(){
		String uneAnnee = null;
		try{
	        FileInputStream fis = new FileInputStream(fichier);
	        ObjectInputStream ois = new ObjectInputStream(fis);
	        CalendarWeekViewer calendar = null;
	        calendar = (CalendarWeekViewer)ois.readObject();
	        ois.close();
	        fis.close();	        
		}  catch(IOException ioe) {
		        ioe.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
		return uneAnnee;
	}
}
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
public class CalendarWeekViewer extends JFrame implements ActionListener, ItemListener {
 
    /**
         * serialVersionUID
         */
	private static final long serialVersionUID = 1L;
	Calendar calendar;
    DateFormat dateFormatter;
 
    CalendarWeekTableModel tableModel;
 
    JLabel monthLabel, yearLabel;
    JTable table;
    int anneeChoisit;
    int anneeActuelle;
    int anneeDefinitif = 0;
    private WeekPanel weekPanel;
	private JCheckBox saturdayCheck;
	private JCheckBox sundayCheck;
    private JMenuBar barreMenu;
	private JMenu fichier, edition;
	private JMenuItem sauvegarder, fermer, copier, coller;
	private Serialiser serialise;
 
	public CalendarWeekViewer(String uneAnnee) {
 
		setTitle("Gestion d'emploir du temps");
		setSize(1400,800);
        this.setLocationRelativeTo(null);
        //Barre de menu
        barreMenu = new JMenuBar();
        fichier = new JMenu("Fichier");
        barreMenu.add(fichier);
    	sauvegarder = new JMenuItem("Sauvegarder");
    	fichier.add(sauvegarder);
    	sauvegarder.addActionListener(this);
    	fermer = new JMenuItem("Fermer");
    	fichier.add(fermer);
    	edition = new JMenu("Edition");
    	barreMenu.add(edition);
    	copier = new JMenuItem("Copier");
    	edition.add(copier);
    	coller = new JMenuItem("Coller");
    	edition.add(coller);
 
    	setJMenuBar(barreMenu);
 
 
		Annee annee = new Annee();
		//Convertion de l'année choisit pour la création du calendrieren entier
		anneeChoisit = annee.anneeChoisit(uneAnnee);
 
        calendar = Calendar.getInstance();
		anneeActuelle = calendar.get(Calendar.YEAR);
		//Comparaison de l'année actuelle avec l'année choisit
		//Si l'année actuelle est avant l'année choisit, on ajoute des années à l'année actuelle pour créer le calendrier
		//Si l'année actuelle est après l'année choisit, on enlève des années à l'année actuelle pour créer le calendrier
		if(anneeActuelle < anneeChoisit){
			anneeDefinitif = anneeChoisit - anneeActuelle; 
			calendar.add(Calendar.YEAR, +anneeDefinitif);
		}else if(anneeActuelle > anneeChoisit){
			anneeDefinitif = anneeActuelle - anneeChoisit;
			calendar.add(Calendar.YEAR, -anneeDefinitif);
		}else{
			calendar.add(Calendar.YEAR, 0);
		}
 
        calendar.set(Calendar.MONTH,Calendar.SEPTEMBER); // on se positionne sur le mois de septembre (le début de notre liste de semaines)    	   
        calendar.set(Calendar.WEEK_OF_MONTH, 1); // on se positionne sur la première semaine du mois
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); // on se positionne sur le premier jour officiel
 
        dateFormatter = new SimpleDateFormat("MMMM yyyy");
        createComponents();
    }
 
    private void createComponents() {
    	//Cases à cocher pour la gestion des jours ouvrés / non ouvrés
    	JLabel holidays = new JLabel("Jours Non-ouvrés");
    	holidays.setFont(new Font(null, Font.BOLD, 12));
    	JPanel checkBox = new JPanel();
    	checkBox.add(holidays);
    	saturdayCheck = new JCheckBox("Samedi");
    	sundayCheck = new JCheckBox("Dimanche");
    	checkBox.add(saturdayCheck);
    	checkBox.add(sundayCheck);
    	saturdayCheck.addItemListener(this);
    	sundayCheck.addItemListener(this);
 
    	//Label indiquant l'année de formation choisit
        yearLabel = new JLabel("Année : "+anneeChoisit+ "-"+(anneeChoisit+1));
        yearLabel.setFont(new Font(null, Font.BOLD, 20));
 
        monthLabel = new JLabel(getWeekLabel());
        monthLabel.setFont(new Font(null, Font.PLAIN, 18));
        monthLabel.setVerticalAlignment(JLabel.CENTER);
        monthLabel.setHorizontalAlignment(JLabel.CENTER);
 
        tableModel = new CalendarWeekTableModel(calendar);
        table = new JTable((TableModel)tableModel);
        table.setPreferredScrollableViewportSize(new Dimension(1400, 600));
        table.getTableHeader().setBackground(Color.YELLOW);
        table.setRowHeight(200);
        TableColumnModel tableColumnModel = table.getColumnModel();
 
        for (int i=0; i < tableColumnModel.getColumnCount(); ++i) {
            TableColumn tableColumn = tableColumnModel.getColumn(i);
            tableColumn.setPreferredWidth(200);
        }
 
        JScrollPane tableScrollPane = new JScrollPane(table);
 
        JPanel southPanel = new JPanel(new BorderLayout()); // le panel intermédiaire
 
        // on créé le weekPanel	
        weekPanel = new WeekPanel(this, calendar, anneeActuelle, anneeChoisit);
        // on met le weekPanel dans le panel intermédiaire
        southPanel.add(weekPanel, BorderLayout.SOUTH);
        JPanel panneau1 = new JPanel(new BorderLayout());
        panneau1.setPreferredSize(new Dimension(1400, 600));
        panneau1.add(monthLabel, BorderLayout.NORTH);
        panneau1.add(tableScrollPane, BorderLayout.CENTER);
        panneau1.add(southPanel, BorderLayout.SOUTH);
        JPanel panneau3 = new JPanel(new BorderLayout());
        JPanel panneau2 = new JPanel(new BorderLayout());
        panneau2.add(yearLabel, BorderLayout.WEST);
        panneau2.add(checkBox, BorderLayout.EAST);
        panneau3.add(panneau2, BorderLayout.NORTH);
        panneau3.add(panneau1);
        this.add(panneau3);
    }
 
    public void setWeek(Calendar selection) {
    	calendar.setTime( selection.getTime());
            monthLabel.setText(getWeekLabel());
        	tableModel.fireTableStructureChanged(); 
        	weekPanel.updateSelection();
    }
 
    private String getWeekLabel() {
 
    	Calendar calendar = Calendar.getInstance(); // on créé un nouveau calendar pour pas modifier le calendar qui nous sert pour savoir quelle semaine on affiche
    	calendar.setTime(this.calendar.getTime()); // on recopie dedans la date actuellement mise dans le calendar qui ser pour savoir quelle semaine on affiche
 
    	int week = calendar.get(Calendar.WEEK_OF_YEAR); // on récupère le numéro de la semaine
 
        // le premier jour de cette semaine
    	Date premierJour = calendar.getTime();
    	int monthPremierJour = calendar.get(Calendar.MONTH); // bug ici (il y avait int monthPremierJour = calendar.get(Calendar.MONDAY); donc n'importe quoi)!!!
 
        // le dernier jour de cette semaine
    	calendar.add(Calendar.WEEK_OF_YEAR, 1);
    	calendar.add(Calendar.DAY_OF_WEEK, -1);
    	Date dernierJour = calendar.getTime();
 
    	int monthDernierJour = calendar.get(Calendar.MONTH);
 
    	return WeekPanel.getWeekLabel(week, premierJour, dernierJour, monthPremierJour, monthDernierJour); 
    }
 
	public void actionPerformed(ActionEvent event) {
		Object source = event.getSource();
		//Sauvegarde du fichier au format binaire
		if(source.equals(sauvegarder)){
		    JFileChooser chooser = new JFileChooser();
		    chooser.setCurrentDirectory(new File("/Documents"));
		    int retrival = chooser.showSaveDialog(null);
		    if (retrival == JFileChooser.APPROVE_OPTION) {
		        try {
		            String fw = (chooser.getSelectedFile()+"_"+anneeChoisit+"_"+(anneeChoisit+1)+".dat");
		            serialise = new Serialiser(fw);
					serialise.serialiser(this);
		        } catch (Exception ex) {
		            ex.printStackTrace();
		        }
		    }		
		}
	}
 
	@Override
	//A FINIR
	public void itemStateChanged(ItemEvent event) {
		Object source = event.getSource();
		int status = event.getStateChange();
		if (source.equals(saturdayCheck)) {
			if(status == ItemEvent.SELECTED){
				JTableRender mcr = new JTableRender();
				for (int columnIndex = 0; columnIndex < table.getColumnCount(); columnIndex ++) {					
					table.getColumnModel().getColumn(5).setCellRenderer(mcr);
				}
			}
		}
		System.out.println(saturdayCheck.isSelected());
 
		if (source.equals(sundayCheck)) {
 
		}
 
	}
}
Merci de votre aide