Como fechar a tela atual após abrir uma nova javafx

bom tenho esse codigo que irá abrir uma nova tela porém a tela antiga ainda fica aberta:

 if (conn.resultset.next()) {
            MenuPrincipal p = new MenuPrincipal ();

Já tentou stageUsadoAnterior.close(); ?
Isso claro se o seu MenuPrincipal é um novo Stage

1 curtida

eu tentei fazer asssim, mas não deu mt certo no controller da tela login:

    if (conn.resultset.next()) {
    SemeqApp semeq = new SemeqApp();
    semeq.login.Close();
    MenuPrincipal p = new MenuPrincipal ();
        try {
            p.start(new Stage());
        } catch (IOException ex) {
            Logger.getLogger(LoginFXController.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
    JOptionPane.showMessageDialog(null, "Senha Invalida");
    }

tela semeqApp (ela é a tela do login que fica aberta após entrar na outra tela):

public class SemeqApp extends Application {

    @Override
    public void start(Stage login) throws Exception {
        Usuario usuario = Usuario.getInstance();
        Parent root = FXMLLoader.load(getClass().getResource("LoginFX.fxml"));
        
        Scene scene = new Scene(root);
        
        login.setScene(scene);
        login.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

sim e menu principal é um novo Stage:

public class MenuPrincipal extends Application {
    
    @Override
    public void start(Stage menu) throws IOException {
        Parent root = FXMLLoader.load(getClass().getResource("MenuPrincipalFX.fxml"));
        
        Scene scene = new Scene(root);
        
        menu.setScene(scene);
        menu.show();
        
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}

Bom, sempre tem mais de uma forma de fazer as coisas.
Vou falar de uma delas.
Tendo uma unica Application, dentro dela voce coloca para show() primeiro
do Login; Depois voce fecha esse Login e abre a Tela do seu MenuPrincipal .
Tudo dentro de uma unica Application.

A principal vantagem de ter tudo em uma unica Application é poder colocar nela todas as referencias envolvidas no projeto.

1 curtida

você poderia me dar um exemplo man?

Consegui resolver