本文介绍了如何告诉IntelliJ从FXMLLoader获取FXML控制器以进行语法高亮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的JavaFX项目遵循以下步骤:计算Model
类中的最佳值初始化Controller
创建FXMLLoader
的新实例设置Controller
和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个错误"污染,fxml
和public void methodName(){/*..*/}
中的#methodName
之间的链接停止工作。
有没有办法告诉IntelliJ从POJO类派生fxml控制器?
基于"No Controller specified for top level element" when programatically setting a Controller可以在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();
}
这篇关于如何告诉IntelliJ从FXMLLoader获取FXML控制器以进行语法高亮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!