[英]Can Not update scene from another controller in javafx
我是Javafx
,我有一个menuBar
和多个场景,可以使用MenuBar
在它们之间进行切换,所有这些都可以正常工作,直到我尝试单击菜单项(而不是显示场景)时执行某些操作为止。
我试图通过使用reload();
方法来显示一些文本字段nom
的文字reload();
我要显示的场景中,我从homeController
类中调用了Enfantcontroller
,在其中我有菜单项的操作方法,当我单击菜单项时,我调用了reload()
将文本enfantView
方法中的文本字段中但是在为该场景加载控制器后什么也没有发生。 这是我的代码:
EnfantController类
public class EnfantController implements Initializable {
@FXML
private TextField nom;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
public void reload() {
this.nom.setText("vndghj");
}
}
homeController类
public class CrechHomeController implements Initializable {
/**
* Initializes the controller class.
*/
@FXML
private BorderPane borderPane;
private AnchorPane enfant;
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
// TODO
enfant = FXMLLoader.load(getClass().getResource(("/Views/Enfant.fxml")));
} catch (IOException ex) {
Logger.getLogger(CrechHomeController.class.getName()).log(Level.SEVERE, null, ex);
}
}
@FXML
public void enfantItemAction() throws IOException {
// getting the controller class and execute the reload method
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/Views/Enfant.fxml"));
loader.load();
EnfantController enfantController = loader.getController();
enfantController.reload();
borderPane.setCenter(enfant);
}
}
我知道我可能会在这里忽略某些东西,但是我不知道这是什么,我们将不胜感激。
您将fxml加载到initialize
方法中。
在enfantItemAction
您再次加载fxml并使用创建的控制器,但是您将显示在initialize
方法中创建的节点。
您需要使用加载显示的fxml时创建的控制器,例如
@FXML
public void enfantItemAction() throws IOException {
// getting the controller class and execute the reload method
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/Views/Enfant.fxml"));
Node node = loader.load();
EnfantController enfantController = loader.getController();
enfantController.reload();
borderPane.setCenter(node);
}
或者,您也可以在字段中将在initialize
方法中加载fxml文件时创建的控制器存储在字段中,而不必在enfantItemAction
方法中再次加载enfantItemAction
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.