Vorher serialisiertes JFrame-Objekt wiederherstellen, wie?

Ich habe es geschafft, mein sehr einfaches GUI-Objekt, das eine JTextArea und einige Schaltflächen enthält, in eine Datei 'test.ser' zu serialisieren.

Nun möchte ich den zuvor gespeicherten Status von 'test.ser' vollständig wiederherstellen, habe aber anscheinend eine falsche Vorstellung davon, wie ein Objektstatus ordnungsgemäß deserialisiert werden kann.

Die Klasse MyFrame erstellt den JFrame und serialisiert ihn.

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();
 }

}

Hier versuche ich die Deserialisierung durchzuführen:

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();
  }
 }

Vielleicht könnte jemand mich in die Richtung weisen, in der mein Missverständnis ist?

Wie würdet ihr eine Klasse schreiben, die die zuvor serialisierten GUI-Elemente deserialisiert und in ihren zuvor serialisierten Zustand zurückversetzt?

Die Art und Weise, wie ich es jetzt mache, scheint mehr als einen Fehler in seinem Konzept zu haben, oder?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage