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

5 respostas
LostSpirit

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

5 Respostas

j-menezes

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

LostSpirit

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);
    }
    
}
j-menezes

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.

LostSpirit

você poderia me dar um exemplo man?

LostSpirit

Consegui resolver

Criado 15 de junho de 2019
Ultima resposta 15 de jun. de 2019
Respostas 5
Participantes 2