我将尝试使用JavaFX
2,并使用一个简单的演示应用程序。该项目包括3个文件,即Main.java,Controller.java和sample.fxml。
在Sample.fxml中,我声明了控制器:
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
在我的Main.java中,我尝试访问控制器
FXMLLoader loader = new FXMLLoader();
Parent root = loader.load(getClass().getResource("sample.fxml"));
System.out.println(loader.getController()); //prints always null
所以我的第一个想法是映射不起作用。因此,我在控制器中添加了一个initialize方法。
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
System.out.println("init");
}
现在的输出是:
在里面
空值
所以我现在的问题是如何访问给定fxml文件的控制器?
该FXMLLoader.load(URL)
方法是静态方法。所以当你执行
FXMLLoader loader = new FXMLLoader();
Parent root = loader.load(getClass().getResource("sample.fxml"));
您不是从构造的FXMLLoader实例(“
loader”)中加载FXML文件。(实际上,您是通过对象引用调用静态方法的。)因此,加载程序的控制器永远不会初始化。
你需要
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Parent root = loader.load();
这将使用指定的位置构造一个加载器,然后load()
在FXMLLoader实例上正确调用该方法(不是静态方法)。然后
System.out.println(loader.getController());
会给出正确的结果。
问题内容: 这里已经有一些类似的帖子,并且尝试了所有建议的解决方案,但仍然无法正常工作……我无法在控制器内部获取值,它始终为null。下面是代码。我想念什么吗? 客户端javascript MVC控制器 模型 问题答案: 谢谢你们的指导和解决方案。解决方案是您所有建议的组合,因此我决定将其汇总在一篇文章中。 解决问题的方法如下: 应该是(如上面的Ant P建议) json数据应采用(如上面的Ant
我正在学习使用SceneBuilder创建一个新的JavaFX应用程序的教程,并尝试向.fxml文件添加一个controller类。 我正在使用Eclipse和Gluon的Scene Builder V8.1.1版本。 在哪里可以将我的.fxml文件连接到我的控制器Java类?
问题内容: 我试图在JavaFX中获得TableView来动态显示内容。 当我运行程序时,出现此错误: 我的控制器名为“ UserInterfaceController.java”,它与FXML文件位于同一软件包下,我也已将该软件包导入了FXML中。为什么找不到控制器? FXML文件: 控制器: 主类: 问题答案: 使用FXML的全限定名来引用您的控制器: 后续问题的答案 对以下问题的回答解释了为
我试图在JavaFX中获得一个TableView来动态显示内容。 当我运行程序时,出现以下错误: 我的控制器名为“UserInterfaceController.java”,它与FXML文件在同一个包下,我也在FXML中导入了包。为什么找不到控制器? FXML文件: 控制器: 主要类:
我已经坚持了几个小时。我不知道为什么我的JavaFX控制器指向null。我在中制作了一个JavaFX GUI,将控制器类及其适当的骨架代码添加到我的项目中。但是当我在我的方法中实例化控制器时,它指向null。 使用文件夹树: 我遵循了此处和此处提及的说明,以及其他一些StackOverflow页面。我完全按照上面提到的方式复制指令,但我的控制器仍然为空。 我缺乏想法,有人知道我做错了什么吗?
我有以下控制器: 当响应为HttpStatus时。好的,我可以读取客户端中的字符串响应: 但是当我返回Httpstatus时。BAD_REQUEST响应总是空的: 即使e.getMessage()具有消息的有效字符串。 这是我用于使用此服务的代码: