我是Javafx
的新手,我有一个menuBar
和多个场景,我可以使用MenuBar
在它们之间切换,一切正常,直到我尝试做某事单击除显示场景以外的菜单项。
我试图通过使用我试图展示的场景的nom
方法在文本字段reload();
中显示一些文字,我称之为{{1}来自我的Enfantcontroller
类,其中我有菜单项操作方法,当我单击菜单项时,我调用homeController
将文本写入reload()
方法中的文本字段,但之后没有任何反应我为该场景加载控制器。这是我的代码:
EnfantController类
enfantView
homeController类
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");
}
}
我知道我可能会在这里忽略一些东西,但我无法弄清楚它是什么,我们将不胜感激。
答案 0 :(得分:1)
您使用initialize
方法加载fxml。
在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
方法中再次加载fxml。