Я пытаюсь сделать что-то похожее на то, о чем просил здесь человек: Закрытие подэтапа
за исключением того, что вместо нажатия кнопки я делаю это с помощью пункта меню и вызова «onAction».
Окно, которое я пытаюсь закрыть, является подокном. В моем основном FXML есть пункт меню, который при нажатии открывает окно. Затем второй.fxml имеет пункт меню, чтобы закрыть окно. Второй.fxml имеет свой собственный контроллер ("FXMLSecondController.java")... но этап был открыт в "FXMLPrimaryController.java".
Мой пункт меню FXML выглядит так:
<MenuItem text="Close" onAction="#closeThisWindow" />
Затем в FXMLSecondController.java у меня есть:
@FXML
private void closeThisWindow(ActionEvent event) {
if (closeWindowDialog()) {
//close the window
new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent aE){
Node source1;
source1 = (Node) aE.getSource();
Stage stage = (Stage) source1.getScene().getWindow();
stage.close();
}
};
} else {
}
}
(Обратите внимание, что «closeWindowDialog()» — это функция, которая открывает диалоговое окно «Да/Нет» и возвращает значение «истина/ложь»).
Кажется, я не могу получить доступ к сцене, с которой я вызываю этот пункт меню из...
PS. Я работаю с JavaFX/Java 8 и NetBeans 8. Нет построителя сцен.
ОТВЕЧАТЬ:
Нашел ответ здесь: Невозможно получить сцену из MenuItem в JavaFX Это была моя проблема.
handle()
как лямбда-выражение, если вы все равно используете Java 8? - person skiwi   schedule 28.02.2014