JFrame intercept exit on close to save data

自作多情 提交于 2019-12-12 13:27:13

问题


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?

see code below:

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

}


回答1:


You should try registering a WindowAdapter and override its windowClosing method. For more information, see How to Write Window Listeners.



来源:https://stackoverflow.com/questions/7650990/jframe-intercept-exit-on-close-to-save-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!