Я новичок в 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 и соответствующий класс управления. Это та часть, где я решил включить информацию о программе в меню справки. Итак, у меня происходит событие, когда меню Help -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 с классом управления. Есть картинка, текстовая область и кнопка,и я хочу, чтобы эта кнопка закрывала новую стадию, которая является aboutBox из класса AboutBox.java, так сказать.
Единственный способ, которым я оказался в состоянии сделать это, состоял в том, чтобы определить общедоступная статическая сцена aboutBox; внутри класса Builder.java и ссылку на него из метода AboutBox.java in, который обрабатывает событие действия на кнопке закрытия. Но как-то не совсем чисто и правильно. Есть ли лучший способ?
Заранее спасибо за ваши советы.