繁体   English   中英

打开附加到当前阶段的新 FXML - JavaFX

[英]Opening a new FXML attached to the current stage - JavaFX

这是SO 问题的扩展,其中文件选择器打开并附加到初级阶段。

如何打开附加到初级阶段的FXML阶段?

下面的代码加载FXML并替换 primaryStage(当前阶段)。 如何将其加载为附加窗口?

            Stage stage = (Stage)((Node) event.getTarget()).getScene().getWindow();
            Parent parent = null;
            try {
                parent = FXMLLoader.load(getClass().getResource("/gui/GUpdater-progress.fxml"));
            } catch (IOException e) {
                e.printStackTrace();
            }
            Scene scene = new Scene(parent,600,400);
            stage.setResizable(false);
            stage.setTitle("GUpdater");
            stage.setScene(scene);
            stage.show();

鉴于您之前的问题,我想通过“附加”您的意思是类似于文件选择器所做的事情(当有父项时,文件选择器将跟随它)。

您需要的第一件事是“主窗口”,您可以通过

       Window ownerWindow = ((Node) event.getTarget()).getScene().getWindow();

接下来是实际加载您的新阶段。

       Stage stage = new Stage();
       stage.initModality(Modality.APPLICATION_MODAL);
       stage.initOwner(ownerWindow);
       Parent root = FXMLLoader.load(getClass().getResource("/gui/GUpdater-progress.fxml"));
       Scene scene = new Scene(root, 600, 400);
       stage.setTitle("GUpdater");
       stage.setScene(scene);
       stage.show();

关键是stage.initOwner(ownerWindow)部分。 您正在创建的这个新阶段由原始窗口“拥有”,即ownerWindow

另外,如果你想获得更像文件选择器的感觉,你应该使用

       stage.initStyle(StageStyle.UNDECORATED);

setScene()之前。 这将删除边框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM