I made a JavaFX project and created the GUI for the first-login frame in the java Scene Builder. When the login is successful, the login frame must be closed and the next frame must be visible (main program frame). I can make the new frame appear, but I can't make the login frame closed. I tried stuff like dispose()
but nothing works. Below is the code for the main class:
public class KuberComm extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setResizable(false);
stage.setTitle("Login to KuberComm");
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
The handler for the login button is located in another class (controller class made by the NetBeans IDE). I can't figure out what the frame's name is in order to use it in the controller class.
Any help will be much appreciated!
give your button a name in the controller class:
and add this method:
In your FXML you need a reference to the button name and the method to call onAction:
This would close the stage that this button is on.
Thanks for your time to reply,but in the end I found out how to fix it. I used
in the
if
that it's responsible for the successful login. I mean, after a dialog appears that informs the user about their successful login, that code goes there.(I imported the right stuff too in order to make that line of code work)
Similar to the other answers but more precise.
Use
If you do this from a controller, you can get the stage from any
Node
inside the scene of the stage (if necessary let the FXML loader assign one to a field of the controller using theid
attribute from the fxml namespace in the fxml):Although
on a
Node
will get you the stage from the controller, it's important to note that callingclose()
orhide()
are equivalent, and will simply make the login window invisible. As for usingdispose()
:This link might help to clear up any confusion.