title: JFrame intercept exit on close to save data
body: <p>I created a window and want to intercept the exit with the method windowStateChanged to save the data before the application closes. However, it doesn't appear to be saving the data before it closes. How can I correct this?</p>
  
  <p>see code below:</p>
  
  <pre><code>public class InventoryMainFrame extends JFrame implements WindowStateListener{
      //set up the main window - instantiate the application
    private InventoryInterface inventoryInterface;    //panel that contains menu choices and buttons
  
    public InventoryMainFrame(){   //main window        
        setTitle("Inventory System");
        setSize (500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        //setLocationRelativeTo(null);    //center window on the screen           
        inventoryInterface = new InventoryInterface();    //set up the panel that contains menu choices and buttons
        add(inventoryInterface.getMainPane());         //add that panel to this window                   
        pack();
        setVisible(true); 
  
        //display window on the screen           
    }
  
  public static void main(String[] args) {        
      //sets up front end of inventory system , instantiate the application
      InventoryMainFrame aMainWindow = new InventoryMainFrame( );
  }
  
  @Override
  public void windowStateChanged(WindowEvent w) {
      //intercept the window close event so that data can be saved to disk at this point
      if (w.getNewState()==WindowEvent.WINDOW_CLOSED){
          //save the index file
          try{
            inventoryInterface.getInventory().saveIndexToFile();
            System.out.println("saving");
            dispose();  //dispose the frame
           }
          catch(IOException io){
              JOptionPane.showMessageDialog(null,io.getMessage());
          }
      }       
  }
  </code></pre>
  
  <p>}</p>