gpt4 book ai didi

user-interface - 从 Controller 内关闭阶段

转载 作者:行者123 更新时间:2023-12-02 01:30:28 25 4
gpt4 key购买 nike

我需要一种通过单击按钮从其内部关闭Stage的方法。

我有一个主类,我从中创建带有场景的主舞台。我为此使用 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 和适当的控件类制作的控件项、菜单和内容。这就是我决定在“帮助”菜单中包含“关于”信息的部分。因此,当激活菜单“帮助 - 关于”时,我会发生一个事件,如下所示:

@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 使用 Controller 创建的。我想添加一个 Button 以从 Controller 内关闭新阶段。

我发现自己能够做到这一点的唯一方法是定义一个公共(public)静态阶段aboutBox;在 Builder.java 类中,并从 AboutBox.java in 方法中引用该类,该方法处理关闭按钮上的操作事件。但不知怎的,它感觉不太干净和正确。还有更好的办法吗?

最佳答案

您可以从传递给事件处理程序的事件中导出要关闭的阶段。

new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent actionEvent) {
// take some action
...
// close the dialog.
Node source = (Node) actionEvent.getSource();
Stage stage = (Stage) source.getScene().getWindow();
stage.close();
}
}

关于user-interface - 从 Controller 内关闭阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com