我需要通过控制器中的代码关闭当前的fxml窗口
我知道stage.close()或stage.hide()在fx中执行此操作
如何在fxml中实现这个?我试过了
private void on_btnClose_clicked(ActionEvent actionEvent) {
Parent root = FXMLLoader.load(getClass().getResource("currentWindow.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
}
但它不起作用!
所有帮助将不胜感激 . 谢谢!
7 回答
给你的关闭按钮一个fx:id,如果你还没有:
<Button fx:id="closeButton" onAction="#closeButtonAction">
在您的控制器类中:
如果您有一个扩展
javafx.application.Application;
的窗口,您可以使用以下方法 .例:
Edit for the beauty of Java 8:
我从接受的答案中收到
NullPointerException
后,以下列方式实现了这一点 .在我的FXML中:
在我的
Controller
课程中:我不确定这是不是最好的方式(或者它是否有效),但你可以尝试:
(假设您的控制器是节点 . 否则您必须先获取节点(getScene()是Node的方法)
我找到了一个不需要触发事件的好解决方案:
你可以简单地实现这一点,
会为你做的伎俩 .
它相当于
hide
. 因此,当您下次打开它时,您只需检查stage
对象是否已退出 . 如果退出,你只需show()
即(stage.show())
电话 . 否则,你必须开始阶段 .