fxml里面引用java格式_JavaFX在加载fxml文件并设置其Label文本时发出错误

在制作口袋妖怪模拟器时,遇到一个JavaFX问题:在加载fxml文件并尝试通过控制器设置Label文本时发生错误。问题源于从主控制器调用包控制器的功能填充标签内容时出现空指针异常。尝试了不同的方法,包括直接加载fxml并获取控制器,但遇到了将FXMLLoader对象赋值给节点集合的错误。寻求解决方案。
摘要由CSDN通过智能技术生成

我昨天提出了类似的问题,但我认为它没有得到很好的解释,所以我想再问一遍,但我在代码中做了一些改动 . 如果我写得太多,我会道歉,但我想让一切都变得可以理解 .

所以,我正在制作一个口袋妖怪模拟器,你可以捕捉和训练口袋妖怪 . 我有一个主要的fxml文件,其中包含访问不同fxml文件的按钮,如catch,battle,shop, bag... 昨天我正在做所有项目存储的包 .

一切都很好,窗户正在正常切换 . 当我试图为包中的每个项目添加一个标签时出现问题,该标签用于向用户显示每件商品的 Value . 所以我创建了没有文字的所有标签,所以它们都是空的 .

他们将从我从数据库获得的信息填充,这个东西也正常工作,我连接到数据库并获得项目的cuantity . 当我想在我的包窗口中显示该项目时,问题就来了 .

为什么?因为你可以想象,当你点击 Baggage 按钮时,我想要的是, Baggage 文件会加载所有标签,每个标签都填满了每个项目 . 标签是在包fxml控制器上定义的,所以如果我想用一些文本填充它们,我不能从我使用另一个控制器的主窗口进行,我需要通过包控制器来完成 .

这是我试图使它工作的代码(位于主控制器):

@FXML

void mochila (ActionEvent event) throws IOException, SQLException {

AnchorPane pane = FXMLLoader.load(getClass().getResource("mochila.fxml"));

anchorPaneContent.getChildren().setAll(pane);

anchorPane2.setStyle("-fx-background-color: #3f3f3f;");

cm.getCantidad();

}

getCantidad是我的包控制器中的一个功能,它是这样的:

public void getCantidad() {

lblpokeballCount.setText("Cantidad: "+pokeballcount);

lblsuperballCount.setText("Cantidad: "+superballcount);

lblultraballCount.setText("Cantidad: "+ultraballcount);

lblmasterballCount.setText("Cantidad: "+masterballcount);

}

因此,当我尝试从主控制器运行此函数时,它返回空指针异常 . 这意味着标签没有初始化,但是当我首先输入 AnchorPane pane = FXMLLoader.load(getClass().getResource("mochila.fxml")); Shoudlnt时,文件中的所有资源都会被加载?因为我在我的包文件中创建了一个按钮,当点击时运行相同的功能,并且它正常工作,因为我从同一个控制器/文件中调用它 .

所以现在我真的不知道该怎么做,这是一个学校的项目,但我的编程老师从未接触过javafx所以他们甚至不知道我在做什么 . 你是我唯一的希望 . 我试着理解这篇文章:post

但我根本不理解这一切,因为我对这些东西都是新手 . 所以,如果你能帮助我,我会非常感激,谢谢!

edit:

@FXML

void mochila (ActionEvent event) throws IOException, SQLException {

FXMLLoader loader = new FXMLLoader(getClass().getResource("mochila.fxml"));

anchorPaneContent.getChildren().setAll(loader);

controladorMochila controller = loader.getController();

controller.getCantidad();

}

anchorPaneContent是主窗格内的一个锚定窗格 . 所有按钮都在主窗格中,根据您单击的按钮,anchorpanecontent将更改为另一个fxml文件 . 我试着像上面提到的帖子那样做 . 但我不能做 anchorPaneContent.getChildren().setAll(loader); 因为它说:节点setAll不适用于参数(FXMLLoader)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值