Olá.
Estou trabalhando com JavaFX.
Alguém sabe como captar o STAGE da janela atual, no momento em que ela abre?
Estou tentando ativar o evento onSetOnCloseRequest de uma janela, durante a sua inicialização, mas quero que o código desse evento fique DENTRO DO CONTROLLER DA JANELA QUE ESTOU ABRINDO.
Tentei captar o stage no método INITIALIZE e, também, no CONSTRUTOR, mas, quando tento usar algum método do stage, ele me retorna um NullPointerException.
Vou dar um exemplo:
@Override
public void initialize(URL url, ResourceBundle rb) {
Stage s = (Stage) LayoutGeral.getScene().getWindow();
s.setOnCloseRequest(w ->{
if(this.RegistroFoiEditado()){
Boolean fechar = Avisos.SimOuNao("CUIDADO", "FORAM FEITAS ALTERAÇÕES.",
"Se fechar a janela, perderá os dados não salvos.\n\n"
+ "Confirma o fechamento?");
if(!fechar){
w.consume();
}
}
});
}
Aí está.
Isso me retorna o NullPointerException, QUANDO É EXECUTADO NO MÉTODO INITIALIZE.
Quando coloco o “setOnCloseRequest” para ser executado em um botão, ele funciona perfeitamente.
É como se, DURANTE A EXECUÇÃO DO INITIALIZE, o stage ainda não existisse.
Ainda dentro do método INITIALIZE, tentei captar o stage a partir de um GETTER, da janela que chamou a janela atual: ocorreu o mesmo erro.
OBS: consigo executar esse método, captando o Stage, de outras formas, SIM.
Porém gostaria de saber como fazer isso, NA INICIALIZAÇÃO DA JANELA (COLOCANDO O CÓDIGO DENTRO DO CONTROLLER DA JANELA), já que é a coisa mais lógica (e prática) a se fazer.
Agradeço a ajuda (e desculpem se não me fiz entender).






