Fechar stage de outra classe

Tenho três classes, sendo que a distribuicao é a seguinte:
1- main;
2- controller 2;
3- controller 3;

Sendo que a classe main(1) é resonsavel por chamar o metodo start da classe controller 2.
A classe controller 2 é responsavel por chamar o metodo start da classe controller 3; (Um stage chamando outro, ou seja, duas janelas distintas).

Quando digo start estou dizendo que tenho dois stages diferentes. Sendo que um é para a controller 2 e o outro para a controller 3.

Descobri que para fechar um stage devo usar o metodo .close();. Porem, como faço para a controller 3 fechar o stage que tem start na controller 2? Lembrando que a controller 2 abri a 3.

Tentei colocar o stage publico e chama-lo na classe 3 da seguinte maneira.

public Class Exemplo{
public Stage stage_help;

@FXML
    private void button_menu_showHelp(ActionEvent event) {
        try {
             stage_help = new Stage();

            Parent root = FXMLLoader.load(getClass().getResource("/br/com/calculator/view/Help.fxml"));
            Scene scene_help = new Scene(root);

            scene_help.setFill(Color.web("#dfdfdf"));

            stage_help.setTitle("Ajuda");
            stage_help.initStyle(StageStyle.UTILITY);
            stage_help.setScene(scene_help);
            stage_help.show();
        } catch (IOException ex) {
            Logger.getLogger(CalculatorController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
[/code][code]
publlic class Exemplo2{

@FXML
    private void button_function_ok(ActionEvent event) {
        Exemplo1 a = new Exemplo1();
        a.stage_help.close();
    }
}

Só que não funcionou. Cmo eu poderia fazer isso?

Olá Johnny, tudo bem?

Bom, você pode trabalhar com as Stages de forma estática, lembrando de trabalhar suas telas com a classe Application.

Exemplo:

[code]public class Exemplo1 extends Application {

private static Stage stage;

@Override
public void start(Stage stage) throws Exception {
// Lógica de inicialização da tela
Exemplo1.stage = stage;
}

@FXML
protected void bt_ok(ActionEvent evt) throws Exception {
new Exemplo2().start(new Stage());
}

public static Stage getStage() {
return stage;
}

public static void main(String[] args) {
launch(args);
}

}[/code]

[code]public class Exemplo2 extends Application {

@Override
public void start(Stage stage) throws Exception {
// Lógica de inicialização da tela
}

@FXML
protected void bt_ok(ActionEvent evt) {
Exemplo1.getStage().close();
}

}[/code]

Veja se ajuda…

Até mais! :smiley: