Stage
をクリックして、内部からを閉じる方法が必要Button
です。
メインクラスがあり、そこからシーンを使ってメインステージを作成します。そのためにFXMLを使用します。
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Builder.fxml"));
stage.setTitle("Ring of Power - Builder");
stage.setScene(new Scene(root));
stage.setMinHeight(600.0);
stage.setMinWidth(800.0);
stage.setHeight(600);
stage.setWidth(800);
stage.centerOnScreen();
stage.show();
}
表示されるメインウィンドウに、FXMLと適切なコントロールクラスを介して作成されたすべてのコントロールアイテムとメニューなどがあります。それは私がヘルプメニューにAbout情報を含めることに決めた部分です。そのため、[ヘルプ]-[バージョン情報]メニューがアクティブになると、次のようなイベントが発生します。
@FXML
private void menuHelpAbout(ActionEvent event) throws IOException{
Parent root2 = FXMLLoader.load(getClass().getResource("AboutBox.fxml"));
Stage aboutBox=new Stage();
aboutBox.setScene(new Scene(root2));
aboutBox.centerOnScreen();
aboutBox.setTitle("About Box");
aboutBox.setResizable(false);
aboutBox.initModality(Modality.APPLICATION_MODAL);
aboutBox.show();
}
ご覧のとおり、About Boxウィンドウは、コントローラーを使用してFXMLを介して作成されます。Button
コントローラ内から新しいステージを閉じるためにを追加したいと思います。
これができると思った唯一の方法は、パブリック静的ステージaboutBoxを定義することでした。Builder.javaクラス内で、終了ボタンのアクションイベントを処理するメソッド内のAboutBox.java内からそのクラスを参照します。しかし、どういうわけか、それは正確にきれいで正しいとは感じません。より良い方法はありますか?