我的 JavaFX 项目遵循以下步骤:
计算最优值Model
班级
初始化Controller
创建一个新实例FXMLLoader
set Controller
and view.fxml
渲染视图
我的 fxml 文件没有类似的行fx:controller="com.example.Controller"
。 IntelliJ 无法解析类似方法onMouseClicked="#processMyButtonClick"
因为它不知道要使用什么控制器。No Controller specified for top level element
。有没有办法告诉IntelliJ。如果在 FXML 中指定了控制器,Java 会抛出异常Controller value already specified
例外。
结果,源代码控制日志被误报“发现 100 个错误”以及之间的链接所污染。#methodName
in fxml
and public void methodName(){/*..*/}
停止工作。
有没有办法告诉 IntelliJ 从 POJO 类派生 fxml 控制器?
基于以编程方式设置控制器时“未为顶级元素指定控制器” https://stackoverflow.com/questions/32868089/no-controller-specified-for-top-level-element-when-programatically-setting-a-c可以在 fxml 文件中指定控制器,但这是不可取的,因为我想在加载 fxml 之前初始化控制器。
我也讨厌这个很长一段时间,但我找到了解决方法。您在 FXML 文件中指定控制器,然后像这样加载它:
public static Node loadScene(Controller c) {
URL resource = Controller.class.getResource("/scene.fxml");
FXMLLoader loader = new FXMLLoader(resource);
loader.setControllerFactory(param -> c);
loader.load();
return loader.getRoot();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)