gpt4 book ai didi

Javafx 阶段为空

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:32 24 4
gpt4 key购买 nike

我这里有两个 Controller authcontrollermaincontroller。方法 register 打开新窗口 - register.fxml。

register.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
Stage stage = new Stage();
AnchorPane pane = null;
try {
pane = FXMLLoader.load(getClass().getResource("/fxml/register.fxml"));
} catch (IOException e) {
e.printStackTrace();
}

stage.setTitle("Регистрация в системе");
Scene scene = new Scene(pane, 600, 450);
stage.setResizable(false);
stage.setScene(scene);
stage.show();
}
});

然后在第二个 Controller 中我有方法初始化,我尝试从第一个窗口获取Stage

@Override
public void initialize(URL location, ResourceBundle resources) {
Stage stage = (Stage) tabOnePane.getScene().getWindow();

}

tabOnePane 是第二个窗口中的选项卡。但是当我尝试这样做时,我的 Stage 始终为 null。但如果我尝试将 Stage 放入另一个句柄方法中,我就可以做到。当我的第二个窗口加载时,如何获取第一个窗口的 Stage

第二个 Controller 实现接口(interface)Initialized

最佳答案

首先,您永远无法访问 Controller 中初始化方法中的阶段。其次,只需向 Controller 添加一个方法,例如 setStage(Stage stge),然后像这样加载 fxml 以将阶段传递给 Controller ​​:

    FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/root/mainGui.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root, 500, 400);
controllerInterface ctrl = loader.getController();
ctrl.setStage(primaryStage);

关于Javafx 阶段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40655518/

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