当前位置: 首页 > 知识库问答 >
问题:

如何告诉IntelliJ从FXMLLoader获取FXML控制器以进行语法hilighting?

楚帅
2023-03-14

我的JavaFX项目遵循以下步骤:在Model类初始化Controller中计算最优值创建一个新的FXMLLoadersetControllerview.fxml渲染视图

我的fxml文件没有类似于fx:controller=“com.example.controller”的行。IntelliJ无法解析诸如onMouseClicked=“#processMyButtonClick”之类的方法,因为它不知道要使用哪个控制器<代码>没有为顶级元素指定控制器。有没有办法告诉IntelliJ。如果在FXML中指定了控制器,Java将抛出已指定的控制器值异常

结果,源代码控制日志被误报(发现了100个错误)污染,并且fxml中的#method Name公共无效方法名称(){/*...*/}之间的链接停止工作。

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

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

共有1个答案

狄天逸
2023-03-14

我也很长一段时间不喜欢这个,但我找到了一份工作。在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();
}
 类似资料:
  • 问题内容: 当我在JavaFX中调用FXMLLoader#load()时会发生什么? 假设FXML控制器扩展了具有构造函数的类。是否可以保证构造函数将被调用?如果没有,将如何创建该对象的新实例?例如,在下面的代码中,是否将调用TextField()构造函数? 我已经尝试过搜索这个,但是除了“从FXML文档中加载对象层次结构”之外,似乎没有关于它的文档。来自http://docs.oracle.co

  • 我已经试着搜索了这篇文章,但是除了“从FXML文档加载对象层次结构”之外,似乎没有关于它的文档。摘自http://docs.oracle.com/javafx/2/api/javafx/fxml/fxmlloader.html 你的回答将不胜感激。多谢!

  • 我有以下代码: 在fxml文件中有一个对控制器类的引用。如何获取控制器对象? fxml:

  • 有没有减少代码冗余的方法?

  • 我有一个围绕JavaFXML和scenebuilder构建的简单的两个选项卡应用程序。这些选项卡目前什么都不做,因为我在尝试加载它们时无法通过null指针异常。 java和fxml文件安排在一个Netbeans项目中,如下所示: 主应用程序:应用程序主类MainApp。java设置场景并声明如下: MainController类为应用程序声明了两个选项卡,输入选项卡和帐户选项卡,以及一个用于关闭程

  • 问题内容: 即使经过数小时的尝试和搜索,我仍然无法弄清一个简单的问题: 我同时安装了Java 6和7。 如何告诉IntelliJ从JDK 1.6版开始Gradle构建? 不管我做什么,IntelliJ始终以 我试过了: 所有项目模块均设置为使用1.6 设定为 设置什么也没做 在命令行上将1.6识别为其JDK 重新启动IntelliJ和/或计算机没有更改行为 是否有某个设置可以避免调用Java 1.