如何告诉 IntelliJ 从 FXMLLoader 获取 FXML 控制器以进行语法高亮显示?

Ste*_*pan 2 javafx fxml fxmlloader

我的 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 个错误”污染,并且#methodNameinfxmlpublic void methodName(){/*..*/}停止工作之间的链接。

有没有办法告诉 IntelliJ 从 POJO 类派生 fxml 控制器?


基于“没有为顶级元素 指定控制器”,当以编程方式设置控制器时,可以在 fxml 文件中指定控制器,但这是不可取的,因为我想在加载 fxml 之前初始化控制器。

fin*_*usl 6

我也讨厌这个很长一段时间,但我找到了解决方法。您在 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();
}
Run Code Online (Sandbox Code Playgroud)