gpt4 book ai didi

controller - 访问另一个 Controller 类中的 Controller

转载 作者:行者123 更新时间:2023-12-03 09:43:34 28 4
gpt4 key购买 nike

我有包含 2 个布局的根布局:- 选项面板- 绘制区域

我正在尝试的是访问 OptionsPaneController 中的 DrawAreaController 以调用其绘制方法。下面是 OptionsPaneController 的初始化方法:

    @Override
public void initialize(URL url, ResourceBundle rb) {
newDragonButton.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent event) {
if(newDragonButton.getText().equals("Nowy")){
//do something
}

else{
newDragonButton.setText("Nowy");

FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/DrawArea.fxml"));
DrawAreaController dac = (DrawAreaController) loader.getController();
Dragon dragon = new Dragon(600, 300, 20, 2, 90, 270, colorChooser.getValue());
if(dac == null)
System.out.println("controller = null");
dac.drawDragon(dragon);
}
}
});
}

不幸的是,dac 始终为空。

我的代码有没有错误,或者无法在另一个 Controller 中加载 Controller ?

最佳答案

Controller 始终为空,因为您从不加载 FXMLLoader。

load()加载 fxml 并为您实例化 Controller 实例。如果在getController()之前没有使用这个方法,它会一直返回null

FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/DrawArea.fxml"));
Parent root = loader.load();
DrawAreaController dac = (DrawAreaController) loader.getController();

您可能想要也可能不想存储 FXML 的根。

关于controller - 访问另一个 Controller 类中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33237356/

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