Restore previously serialized JFrame-object, how?
Posted
by elementz
on Stack Overflow
See other posts from Stack Overflow
or by elementz
Published on 2010-04-26T08:29:34Z
Indexed on
2010/04/26
10:13 UTC
Read the original article
Hit count: 275
Hi all. I have managed to serialize my very basic GUI-object containing a JTextArea and a few buttons to a file 'test.ser'.
Now, I would like to completely restore the previously saved state from 'test.ser', but seem to have a misconception of how to properly deserialize an objects state.
The class MyFrame creates the JFrame and serializes it.
public class MyFrame extends JFrame implements ActionListener {
// Fields JTextArea textArea; String title; static MyFrame gui = new MyFrame(); private static final long serialVersionUID = 1125762532137824262L;
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub gui.run(); }
// parameterless default contructor public MyFrame() {
}
// constructor with title public MyFrame(String title) {
}
// creates Frame and its Layout public void run() {
JFrame frame = new JFrame(title); JPanel panel_01 = new JPanel(); JPanel panel_02 = new JPanel();
JTextArea textArea = new JTextArea(20, 22); textArea.setLineWrap(true);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
panel_01.add(scrollPane);
// Buttons JButton saveButton = new JButton("Save"); saveButton.addActionListener(this); JButton loadButton = new JButton("Load"); loadButton.addActionListener(this);
panel_02.add(loadButton); panel_02.add(saveButton); // Layout frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(BorderLayout.CENTER, panel_01); frame.getContentPane().add(BorderLayout.SOUTH, panel_02);
frame.setSize(300, 400); frame.setVisible(true); }
/* * */ public void serialize() {
try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.ser")); oos.writeObject(gui); oos.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }
public void actionPerformed(ActionEvent ev) { System.out.println("Action received!"); gui.serialize(); }
}
Here I try to do the deserialization:
public class Deserialize {
static Deserialize ds;
static MyFrame frame;
public static void main(String[] args) { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.ser")); frame = (MyFrame) ois.readObject(); ois.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Maybe somebody could point me into the direction where my misconception is? Thx in advance!
© Stack Overflow or respective owner