如何告诉IntelliJ从FXMLLoader获取FXML控制器的语法高亮?

时间:2017-09-07 19:50:28

标签: 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个错误" #methodNamefxmlpublic void methodName(){/*..*/}之间的链接停止工作。

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

基于"No Controller specified for top level element" when programatically setting a Controller 一个人可以在fxml文件中指定控制器,但这是不可取的,因为我想在加载fxml之前初始化Controller。

1 个答案:

答案 0 :(得分:3)

我也讨厌这个很长一段时间,但我找到了一个解决方法。您在FXML文件中指定Controller,然后加载它:

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();
}