这是SO question的扩展名,其中文件选择器打开并附加到主要阶段。
如何打开一个附属于初级舞台的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();
答案 0 :(得分:0)
鉴于你之前的问题,我认为通过“附加”你的意思就像文件选择器所做的那样(当有父母时,文件选择器会跟随它)。
您需要的第一件事是“主窗口”,您可以通过
获取 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()
之前。这将删除边框。