我昨天提出了一个类似的问题,但我认为它没有得到很好的解释,所以我想再问一遍,但我在代码中做了一些修改。如果我写得太多,我会道歉,但我想让一切都能理解。
这是我试图使其工作的代码(位于main controller中):
@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是我的bag控制器中的一个函数,它是:
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”));
文件中的所有资源都应该加载吗?因为我在我的bag文件中创建了一个按钮,当点击时运行相同的函数,并且它可以正常工作,因为我是从同一个控制器/文件调用它的。
@FXML
void mochila (ActionEvent event) throws IOException, SQLException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("mochila.fxml"));
anchorPaneContent.getChildren().setAll(loader);
controladorMochila controller = loader.<controladorMochila>getController();
controller.getCantidad();
}
anchorPaneContent是位于主窗格内部的anchorpane。所有按钮都在主窗格中,根据您单击的按钮,anchorpanecontent将为另一个fxml文件更改。我试着像我上面提到的帖子那样去做。但我不能执行AnchorPaneContent.getChildren().setAll(loader);
,因为它说:节点setAll不适用参数(FXMLLoader)
您正在尝试将FXMLLoader
添加到锚定窗格中,但这将不起作用,因为FXMLLoader
不是可视组件(它是加载FXML文件的东西)。
此外,您试图从fxmlloader
获取控制器,而不实际加载FXML文件;这将不起作用,因为controller类是在FXML文件中指定的(因此FXMLLoader
在加载文件之前不知道要创建什么样的控制器)。
您需要加载FXML文件并将结果添加到锚点窗格:
@FXML
void mochila (ActionEvent event) throws IOException, SQLException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("mochila.fxml"));
anchorPaneContent.getChildren().setAll(loader.load());
controladorMochila controller = loader.<controladorMochila>getController();
controller.getCantidad();
}
@FXML
void mochila (ActionEvent event) throws IOException, SQLException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("mochila.fxml"));
Parent pane = loader.load();
anchorPaneContent.getChildren().setAll(pane);
controladorMochila controller = loader.<controladorMochila>getController();
controller.getCantidad();
}
刚接触javaFx并希望使用scenebuilder进行GUI开发时,我遇到了一个问题,在网站上或整个web上搜索我的问题时都没有运气,尽管有人问过类似的问题,认为可能需要一个不同的视角。我试图在快速构建之后通过Netbeans加载一个FXML文件,以测试功能,这样代码就简单了,但是我无法在控制器中设置根文件。我的代码是下面的公共类Divergex extends Application{ 我尝试
问题内容: 我是javaFx的新手,并且希望使用scenebuilder进行GUI开发,尽管遇到了类似的问题,但仍可能需要不同的观点,但我遇到了一个问题,尽管在网站或Web上搜索我的运气都不好。我试图在快速构建以测试功能后通过Netbeans加载FXML文件,以便代码简单,但是我无法在控制器中设置根文件。我的代码是以下公共类Divergex扩展的Application { 我尝试过将fxroot更
我正在尝试使用以下代码将我的fxml文件集成到我的项目中, 程序在第二行崩溃,引发此异常, 也试过了, 我不知道这是否相关,但这是我的iml文件, 是什么原因造成的?我该如何修复它? 这里是我的项目的一个拉链,如果有人想看一下。 谢谢, 亨利
操作步骤: ①在"图层管理"模块,选择一个带有数据的标注图层,点击"样式设置"。 ②选择"散点图" ,点击应用。 ③应用后,数据显示。 操作动图: [查看原图]
我一直在做一个桌面应用程序,在那里我需要使用JavaFX。我在使用Scene Builder构建的eclipse上的JavaFX项目中创建了各种FXML文件。除了这个讨厌的文件(fxmlimglist.FXML)外,我加载任何FXML文件都没有问题。 其主要思想是,当按下一个按钮时,会出现一个新窗口。下面是该按钮的事件处理程序的代码: package explorer中的项目如下所示: https
我正在尝试使用Maven编写一个JavaFx8应用程序。我编写了一个简单的应用程序主类和一个fxml文件(一个不执行任何操作的根fxml文件)。 当我尝试加载fxml根文件时,出现错误“Location is not set”: 我不是JavaFx8的新手,我已经遇到过这种错误,但这次我没有发现问题。 我的类是:app.java rootLayout.fxml: 我检查了打印出getClass输出