在
initialize()加载FXML文件的过程中,将调用该方法-换句话说,在调用时将调用该方法
miCargador.load()。
显然,这是 在 调用 之前
发生的
window1.initStage(...),因此在
initialize()被调用时
tituloAnterior仍为null。
简单的解决方案是不访问
tituloAnterior的
initialize()方法,但是做任何你需要在用它做
initStage()的方法。例如
public void initStage(Stage stage){ primaryStage = stage; escenaAnterior = stage.getScene(); tituloAnterior = stage.getTitle(); primaryStage.setTitle("Window 1"); someLabelFromFXML.setText(tituloAnterior); }如果愿意,可以在Java代码中为FXML加载程序设置控制器:
@FXMLprivate void goWindow1(ActionEvent event) { try { FXMLLoader miCargador = new FXMLLoader(getClass().getResource("/vista/Window1.fxml")); Window1Controller window1 = new Window1Controller(); window1.initStage(primaryStage); miCargador.setController(window1); Parent root = (Parent) miCargador.load(); // Access to window driver 1 Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.show(); } catch (IOException e) {e.printStackTrace();} }}然后
fx:controller从您的FXML文件中删除该属性。这样,方法在
initStage()方法之前被调用
load(),并且
tituloAnterior在
initialize()被调用时不会为null
。



