Mega Code Archive

 
Categories / Java / Development Class
 

This program demonstrates the use of an XML encoder and decoder to save and restore a frame

/*    This program is a part of the companion code for Core Java 8th ed.    (http://horstmann.com/corejava)    This program is free software: you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation, either version 3 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program.  If not, see <http://www.gnu.org/licenses/>. */ import java.awt.*; import java.awt.event.*; import java.beans.*; import java.io.*; import javax.swing.*; /**  * This program demonstrates the use of an XML encoder and decoder to save and restore a frame.  * @version 1.01 2007-10-03  * @author Cay Horstmann  */ public class PersistentFrameTest {    public static void main(String[] args)    {       chooser = new JFileChooser();       chooser.setCurrentDirectory(new File("."));             PersistentFrameTest test = new PersistentFrameTest();       test.init();    }    public void init()    {       frame = new JFrame();       frame.setLayout(new FlowLayout());       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       frame.setTitle("PersistentFrameTest");       frame.setSize(400, 200);       JButton loadButton = new JButton("Load");       frame.add(loadButton);       loadButton.addActionListener(EventHandler.create(ActionListener.class, this, "load"));       JButton saveButton = new JButton("Save");       frame.add(saveButton);       saveButton.addActionListener(EventHandler.create(ActionListener.class, this, "save"));             frame.setVisible(true);    }    public void load()    {       // show file chooser dialog       int r = chooser.showOpenDialog(null);       // if file selected, open       if(r == JFileChooser.APPROVE_OPTION)       {          try          {             File file = chooser.getSelectedFile();             XMLDecoder decoder = new XMLDecoder(new FileInputStream(file));             decoder.readObject();              decoder.close();          }          catch (IOException e)          {             JOptionPane.showMessageDialog(null, e);          }       }    }    public void save()    {       if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION)       {          try          {             File file = chooser.getSelectedFile();             XMLEncoder encoder = new XMLEncoder(new FileOutputStream(file));             encoder.writeObject(frame);             encoder.close();          }          catch (IOException e)          {             JOptionPane.showMessageDialog(null, e);          }       }    }    private static JFileChooser chooser;    private JFrame frame; } <?xml version="1.0" encoding="UTF-8"?>  <java version="1.6.0_01" class="java.beans.XMLDecoder">   <object class="javax.swing.JFrame">    <void property="bounds">     <object class="java.awt.Rectangle">      <int>33</int>      <int>0</int>      <int>400</int>      <int>200</int>     </object>    </void>    <void property="contentPane">     <void method="add">      <object class="javax.swing.JButton">       <string>Load</string>       <void method="addActionListener">        <object class="java.beans.EventHandler" method="create">         <class>java.awt.event.ActionListener</class>         <object id="PersistentFrameTest0" class="PersistentFrameTest"/>         <string>load</string>        </object>       </void>      </object>     </void>     <void method="add">      <object class="javax.swing.JButton">       <string>Save</string>       <void property="model">        <void property="rollover">         <boolean>true</boolean>        </void>       </void>       <void method="addActionListener">        <object class="java.beans.EventHandler" method="create">         <class>java.awt.event.ActionListener</class>         <object idref="PersistentFrameTest0"/>         <string>save</string>        </object>       </void>      </object>     </void>     <void property="layout">      <object class="java.awt.FlowLayout"/>     </void>    </void>    <void property="defaultCloseOperation">     <int>3</int>    </void>    <void property="minimumSize">     <object class="java.awt.Dimension">      <int>143</int>      <int>62</int>     </object>    </void>    <void property="name">     <string>frame0</string>    </void>    <void property="title">     <string>PersistentFrameTest</string>    </void>    <void method="addWindowListener">     <object class="sun.awt.im.InputMethodContext"/>    </void>    <void property="visible">     <boolean>true</boolean>    </void>   </object>  </java>