JavaFX:如何从另一个控制器关闭阶段

时间:2015-06-27 15:14:47

标签: javafx

我正在开发一个JavaFX管理应用程序,我需要成功完成serval窗口(阶段)来完成一个过程,以确保用户可以随时返回而不会丢失信息(输入字段)。我不会关闭现阶段。好的,现在我可以回去而不会丢失信息 ,但我想知道如何在流程结束时关闭所有中间阶段?一切都完成了。

更简单地说我想知道如何隐藏或关闭来自其他控制器的舞台,而不是自己的控制器。或者完全是另一种解决方案来制作我想要的东西。

2 个答案:

答案 0 :(得分:0)

以下是您可以在需要从外部控制器访问字段的情况下使用的解决方案列表,据我所知,这似乎是个问题。

1)您将对该字段的引用传递给必要的控制器,其余部分是直接的。

2)如果您担心舞台的隐私,那么您可以设置回调,这可以像self.wfile的实例一样简单。因此,只要有必要,您只需调用其Runnable,它在您的其他控制器中实现并隐藏阶段

3)如果您不想进行任何直接通信,请创建一个全局/范围的事件系统。这个想法是让一个控制器做类似run()的事情,另一个听到这样的事件,当它发生时 - 检查id,如果一切正常,关闭阶段,否则只是忽略事件。

主要取决于您的应用基础架构,但每个应用基础架构都应该易于集成。

答案 1 :(得分:0)

//let,s say this is the method that opens a new scene of AccessControl.FXML, inside FXMLDocumentController.java as a controller.

 public void ShowAccessControlWindow() {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("AccessControl.fxml"));
            stageaccessControl = new Stage();
            stageaccessControl.getIcons().add(new Image(SdaPro.class.getResourceAsStream("/images/hamlog.png")));
            stageaccessControl.setResizable(false);
            Scene scene = new Scene(root);
            stageaccessControl.setScene(scene);
            stageaccessControl.setTitle("TRECLERK BOOKS");
            stageaccessControl.initModality(Modality.APPLICATION_MODAL); 
            stageaccessControl.show();
        } catch (Exception ex) {
        }
    } 

Then to access the parent stage in FXMLDocumentController, it should be a static and to close it in the AccessController or the new controller, 
This is the way ==  FXMLDocumentController.stageTansaction.close();