Como fechar uma nova janela pop-up do Controller no JavaFX

Lucas

Tenho Controller.java para Scene.fxml e ControllerSettings.java para WindowSettings.fxml. Em Controller.java, crio uma nova janela pop-up (sem caixa de diálogo) com o seguinte método:

    @FXML
    public void handleSubmenuSettings(ActionEvent event) throws IOException {

        Stage stage; 
        Parent root;
        ControllerSettings controller;

        stage = new Stage();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("WindowSettings.fxml"));
        root = (Parent) loader.load();
        controller = (ControllerSettings) loader.getController();
        stage.setScene(new Scene(root));

        stage.setTitle("Settings");
        stage.initModality(Modality.APPLICATION_MODAL);
        stage.setResizable(false);
        stage.initOwner(submenuSettings.getScene().getWindow());
        stage.showAndWait();

        stage.setOnCloseRequest(e -> {
            e.consume();
            controller.saveSettings();
            stage.close();
        });
    }

Quero salvar as configurações ao fechar a nova janela pop-up, mas isso não funciona com stage.setOnCloseRequest.

James_D

O showAndWait()método bloqueará a execução até que a janela seja fechada; ou seja, as instruções subsequentes não serão executadas até que a janela seja fechada. Portanto, você não registra o ouvinte para a solicitação de fechamento até que a janela seja fechada. Obviamente, nenhuma solicitação para fechar a janela ocorrerá depois que ela for fechada, portanto, seu manipulador nunca é chamado.

De qualquer forma, não está muito claro por que você está usando um manipulador de solicitação de fechamento. Presumivelmente, você simplesmente deseja ligar controller.saveSettings()depois que a janela fechar. Já que você está usando, showAndWait()você pode apenas fazer:

@FXML
public void handleSubmenuSettings(ActionEvent event) throws IOException {

    Stage stage; 
    Parent root;
    ControllerSettings controller;

    stage = new Stage();
    FXMLLoader loader = new FXMLLoader(getClass().getResource("WindowSettings.fxml"));
    root = (Parent) loader.load();
    controller = (ControllerSettings) loader.getController();
    stage.setScene(new Scene(root));

    stage.setTitle("Settings");
    stage.initModality(Modality.APPLICATION_MODAL);
    stage.setResizable(false);
    stage.initOwner(submenuSettings.getScene().getWindow());
    stage.showAndWait();

    controller.saveSettings();
}

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como fechar uma janela pop-up do navegador Chrome?

Como fechar uma janela pop-up do navegador Chrome?

Como fechar uma janela pop-up apenas clicando nela?

Nova janela pop-up personalizada do JavaFX

Como faço para fechar uma janela do Tkinter quando uma nova janela do Tkinter é aberta?

Como fechar a janela pop-up por botão em javafx

Como fechar uma janela pop-up modal ao pressionar a tecla Escape

Como fechar uma janela pop-up, ao clicar em um botão apenas em html

Como fechar uma janela modal aberta quando uma nova abre?

Como fechar uma nova janela criada por uma função

Janela pop-up no youtube - como fechar com selênio

como fechar a janela modal pop-up no bootstrap

Como alternar para uma nova janela pop-up usando selenium / java

Como selecionar o botão que aparece em uma nova janela pop-up na capivara?

Como fechar uma janela do simulador sem fechar todas?

Como fechar a janela pop-up, quando não há XPath para o botão Fechar?

Nova janela pop-up do Prism no WPF

Fechar janela pop-up Python Selenium

Tkinter - Como posso fazer um botão pode criar uma nova janela e fechar a janela principal

como abrir uma nova janela e fechar a janela atual quando clico no botão Java GUI?

Como pré-selecionar os valores do recurso em uma janela pop-up do kendoScheduler?

Como pré-selecionar os valores do recurso em uma janela pop-up do kendoScheduler?

Como obter a guia ativa atual de uma nova janela pop-up criada por chrome.windows

Como fechar uma janela no GWT?

Como fechar uma janela modal?

Existe uma maneira de fechar um pop-up de extensão do Chrome, quando o usuário está em uma janela separada do Chrome?

Como fechar a guia atual em uma janela do navegador?

Como faço para fechar uma janela do tkinter?

Android - Como criar uma janela pop-up no estilo pesquisa do Google em editar texto?

TOP lista

quentelabel

Arquivo