如何告诉IntelliJ从FXMLLoader获取FXML控制器以进行语法高亮? [英] How to tell IntelliJ get FXML controller from FXMLLoader for syntax hilighting?

查看:20
本文介绍了如何告诉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控制器以进行语法高亮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆