JavaFX2: закрытие этапа (подэтапа) изнутри себя
Я новичок в JavaFx и создаю приложение, и мне нужно что-то похожее на JDialog, которое предлагалось при использовании компонентов Swing. Я решил это, создав новый этап, но теперь мне нужен способ закрыть новый этап изнутри, нажав кнопку. (да, кнопка x тоже работает, но она тоже нужна). Чтобы описать ситуацию: У меня есть основной класс, из которого я создаю главную сцену со сценой. Я использую 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 и соответствующий класс управления. Это та часть, в которой я решил включить информацию о программе в меню «Справка». Таким образом, у меня происходит событие, когда меню Справка - О, активировано, как это:
@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 с классом управления. Здесь есть картинка, текстовая область и кнопка, и я хочу, чтобы эта кнопка закрыла новый этап, который представляет собой aboutBox из класса AboutBox.java, так сказать.
Единственный способ, которым я смог это сделать, - это определить публичная статическая сцена aboutBox; внутри класса Builder.java и ссылки на него из метода AboutBox.java in, который обрабатывает событие action на закрывающей кнопке. Но почему-то он не совсем чистый и правильный. Есть ли лучший способ?
Заранее спасибо за ваши советы.