How do I close a JFrame ???

Hi Experts,

   In the end following code, every time when the gameOver() is called, it creates a new Test(). Therefore, after several runs ... I got many Test() and many JFrame .... How do I close the previous one after a new one is created ??? many thanks !!!


public class Test extends JFrame implements KeyListener, ActionListener{
           
         // --- blah blah ....
 
          public Test() {

         // --- blah blah ....                      
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(425,425) ;
        show() ;
       
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Test mySnake = new Test() ;
       
    }
   
    public void actionPerformed(ActionEvent e) {
               blah .....    
         if(e.getSource() == restart){ Test PlayAgain = new Test() ;}
               blah .....
   }

      public void gameOver(){
           //   blah ....  
        restart = new JButton() ;
        restart.setText("Play Again!") ;
        restart.setSize(150,30) ;
        restart.setLocation(125,150) ;
        restart.addActionListener(this) ;
        getContentPane().add(restart) ;
          // blah ...
       }
}

LVL 1
meow00Asked:
Who is Participating?
 
objectsConnect With a Mentor Commented:
instead of creating a new window, it may be a better idea to instead clear/reset the current one.
0
 
objectsCommented:
you need to keep a reference to the current frame and call its dispose() method to close it.
0
 
CI-Ia0sConnect With a Mentor Commented:
If you may need the frame later you can just make it hide with "frameName.setVisible(false);", though this still ties up its resources. If you want to get rid of it for good, use dispose() as objects suggested (note that all of it's component and any variables you might have declared within an extended JPanel, etc. are also erased).
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.