本文介绍了如何告诉IntelliJ从FXMLLoader获取FXML控制器以进行语法高亮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的JavaFX项目遵循以下步骤:计算Model类中的最佳值初始化Controller创建FXMLLoader的新实例设置Controllerview.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个错误"污染,fxmlpublic 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控制器以进行语法高亮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 23:02