切换/退出fxml

时间:2012-03-12 09:53:45

标签: javafx fxml

我的测试应用流程使用多个屏幕:

start(Stage stage) -> Screen 1
                   -> Screen 2
                   -> ...

我想在fxml中实现一些我的屏幕,但无法确定在它们之间切换的最佳实践方式。

当屏幕1到达最终状态时,如何在屏幕1控制器中实现一些退出事件机制,并将其连接到"主循环"删除屏幕1并用屏幕2更新场景?

1 个答案:

答案 0 :(得分:1)

在我看来,最好的方法是将屏幕“按需”加载,无论何时使用它们,甚至只为主屏幕的某些区域加载它们(如标签)。要使用FXML加载屏幕,然后将其分配到主舞台,您可以执行以下操作:

Parent root = FXMLLoader.load(me.getClass().getResource("Scene2.fxml"));
Scene scene = new Scene( root );
stage.setScene(scene);

另一种选择是使用多个阶段,在需要执行特定操作时启动阶段。这个阶段可以是模态的,所以当它关闭时,主窗口会留在后面:

final  Stage stage = new Stage();     
stage.initStyle(StageStyle.UNDECORATED);
stage.initOwner(owner_stage);
stage.initModality(Modality.APPLICATION_MODAL);

在后一种情况下,“退出机制”只是隐藏了场景:

// from a label of your controller class
label.getScene().getWindow().hide();  

在第一种情况下,您只需加载舞台中的主场景。使用多个阶段是最常见和最直接的方式。