JavaFX2: Zamknięcie etapu (podstacji) od wewnątrz
Jestem nowym użytkownikiem JavaFx i tworzę aplikację i potrzebowałem czegoś podobnego do JDialog, które było oferowane podczas korzystania z komponentów swing. Rozwiązałem to tworząc nowy etap, ale teraz potrzebuję sposobu, aby zamknąć nowy etap z wnętrza, klikając przycisk. (tak, przycisk x także działa, ale chciałem go także na przycisku). Aby opisać sytuację: Mam klasę główną, z której tworzę scenę główną ze sceną. Do tego używam 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();
}
Teraz w głównym oknie, które się pojawi, mam wszystkie elementy sterujące i menu oraz rzeczy, wykonane za pomocą FXML i odpowiedniej klasy kontrolnej. To część, w której zdecydowałem się umieścić informacje o programie w menu Pomoc. Mam więc wydarzenie, gdy menu Help - About jest aktywowane, w ten sposób:
@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();
}
Jak widać, okno About Box jest tworzone przez FXML ponownie z klasą kontrolną. Jest zdjęcie, obszar tekstowy i przycisk, a ja chcę, żeby ten przycisk zamykał nowy etap, którym jest AboutBox z klasy AboutBox.java.
Jedynym sposobem, w jaki mogłem to zrobić, było zdefiniowanie publicznego statycznego Stage o Boxie; wewnątrz klasy Builder.java i odwołanie do tej z poziomu AboutBox.java w metodzie, która obsługuje zdarzenie akcji na przycisku zamknięcia. Ale jakoś nie czuje się dokładnie tak, jak trzeba. Czy jest lepszy sposób?
Z góry dziękuję za porady.