Bonjour tout le monde
Ma JFrame comporte deux boutons. Les deux boutons comportent une image différente. Quand je clique sur l'un d'eux, le JPanel central prends l'image du JButton.
Je voudrais savoir s'il est possible sérialiser le panel ou l'imageIcon. Je souhaiterai, si c'est possible, pouvoir fermer ma fenêtre et l'ouvrir avec directement la dernière image qui était sur mon panel.
Merci
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 public class MainFrame extends JFrame implements Serializable { private JButton b1= new JButton((new ImageIcon(((new ImageIcon("Images\\montagne.jpg")).getImage()).getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH)))); private JButton b2 = new JButton((new ImageIcon(((new ImageIcon("Images\\newyork.jpg")).getImage()).getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH)))); private ImageIcon montagneIcon = new ImageIcon("Images\\montagne.jpg"); private ImageIcon newyorkIcon = new ImageIcon("Images\\newyork.jpg"); private JPanel panSouth = new JPanel(); private static JPanel panCenter = new JPanel(); public MainFrame(JPanel panCenter){ this.panCenter=panCenter; setSize(350,550); setLocationRelativeTo(null); add(panCenter); panSouth.add(b1); panSouth.add(b2); add(panSouth, BorderLayout.SOUTH); b1.addActionListener(new actionButtons()); b2.addActionListener(new actionButtons()); } class actionButtons implements ActionListener{ public void actionPerformed(ActionEvent e) { if(e.getSource()==b1) setFondEcran(montagneIcon); else setFondEcran(newyorkIcon); } } public void setFondEcran(ImageIcon image) { panCenter.removeAll(); panCenter.add(new JLabel(image)); panCenter.revalidate(); panCenter.repaint(); } public static void main(String[] args) { serializeObject(); deSerializeObject(); } public static void serializeObject() { MainFrame mf = new MainFrame(panCenter); mf.setVisible(true); try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("serialization.ser")); oos.writeObject(mf); oos.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } public static void deSerializeObject() { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("serialization.ser")); MainFrame mf = (MainFrame) ois.readObject(); } catch (java.io.IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }![]()
Partager