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

Заранее спасибо за ваши советы.

9
задан Meg 13 July 2012 в 10:34
поделиться