Kevin
Kevin

Reputation: 115

Java: How do I close a JFrame while opening another one?

My program starts with a picture with a textfield in a JFrame. I want when the user types start it closes the picture JFrame and opens another JFrame with the main program. I've tried

processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));

on the Image frame but it closes all the windows.

Upvotes: 5

Views: 88509

Answers (12)

Repelation
Repelation

Reputation: 1

This is what i came up for opening a new jframe while closing the other one:

JFrame CreateAccountGUI = new JFrame();
CreateAccountGUI.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
CreateAccountGUI.setSize(800, 600);
CreateAccountGUI.setLocationRelativeTo(null);
CreateAccountGUI.setVisible(true);   
this.setVisible(false);

Upvotes: -1

TheWaterWave222
TheWaterWave222

Reputation: 139

First call it

new Window().nextjframe.setVisible(true);
thisjframe.setVisible(false);

Upvotes: 0

Manas
Manas

Reputation: 11

For netbeans use the reference of the current Object and setVisible(false); for example

private void submitActionPerformed(java.awt.event.ActionEvent evt)
{                                
    // TODO add your handling code here:
    this.setVisible(false);//Closing the Current frame
    new login().setVisible(true);// Opening a new frame
}                                     

Upvotes: 1

Latif
Latif

Reputation: 125

Here is my solution to this problem:

public void actionPerformed(ActionEvent e) {
    String userName =  textField.getText();
    String password = textField_1.getText();
    if(userName.equals("mgm") &&  password.equals("12345")) {            
         secondFrame nF = new secondFrame();

         nF.setVisible(false);
         dispose();          
    }   
    else 
    {
        JOptionPane.showMessageDialog(null, " Wrong password ");
    }
}

Upvotes: 1

This post is a bit old but nevertheless.

If you initialize the form like that:

JFrame firstForm = new JFrame();

firstForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
firstForm.setSize(800, 600);
firstForm.setLocationRelativeTo(null);

firstForm.setVisible(true);

And for instance create or open another form by a button:

JFrame secondForm = new JFrame();

secondForm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
secondForm.setSize(800, 600);
secondForm.setLocationRelativeTo(null);

secondForm.setVisible(true);

this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));

This will dispose and destroy the first window without exiting the program.
The key is to set setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE).
It also raises the events (I've tested it with the WindowClosing event).

Upvotes: 1

Vinayak Mathur
Vinayak Mathur

Reputation: 11

I was searching for the same thing and found that using "this" is the best and easiest option. you can Use the following code: this.dispose();

Upvotes: 1

Abdull gaffar
Abdull gaffar

Reputation: 1

if(username.equals("gaffar")&&password.equals("12345"))
    {
    label.setText("Be ready to continue");
    //Start of 2nd jframe
    NewJFrame1 n=new NewJFrame1();
     n.setVisible(true);
     //Stop code for ist jframe
     NewJFrame m=new NewJFrame();
     m.setVisible(false);
     dispose();
    }

Upvotes: -1

Skitty
Skitty

Reputation: 1787

private void closeTheCurrentFrameAndOpenNew(java.awt.event.ActionEvent evt){

 dispose();//To close the current window

 YourClassName closeCurrentWindow = new YourClassName();
 closeCurrentWindow.setVisible(true);//Open the new window

}

Upvotes: 0

Said Erraoudy
Said Erraoudy

Reputation: 1569

you also can use this :

opens_frame frameOld= new opens_frame();
            frameOld.setVisible(true);
            Closing_Frame.setVisible(false);
            Closing_Frame.dispose();

Upvotes: 0

Mahdi_Nine
Mahdi_Nine

Reputation: 14761

you also can use this code

for example

  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

Upvotes: 3

Zach L
Zach L

Reputation: 16272

Maybe if you set the picture JFrame's default close operation to something besides EXIT_ON_CLOSE, perhaps DISPOSE_ON_CLOSE, you can prevent your application from closing before the second JFrame appears.

Upvotes: 2

AniDev
AniDev

Reputation: 1579

The method JFrame.setVisible can be used to hide or display the JFrame based on the arguments, while JFrame.dispose will actually "destroy" the frame, by closing it and freeing up resources that it used. Here, you would call setVisible(false) on the picture frame if you intend to reopen it, or call dispose() on the picture frame if you will not be opening it again, so your program can free some memory. Then you would call setVisible(true) on the main frame to make it visible.

Upvotes: 9

Related Questions