如何告诉 IntelliJ 从 FXML Loader 获取 FXML 控制器以进行语法高亮显示?
How to tell IntelliJ get FXML controller from FXMLLoader for syntax hilighting?
我的 JavaFX 项目遵循以下步骤:
在 Model
class 中计算最优值
初始化 Controller
创建 FXMLLoader
的新实例
设置 Controller
和 view.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 个错误”所污染,fxml
和 public void methodName(){/*..*/}
中的 #methodName
之间的 link 停止工作。
有没有办法告诉 IntelliJ 从 POJO 派生 fxml 控制器class?
基于"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();
}
我的 JavaFX 项目遵循以下步骤:
在 Model
class 中计算最优值
初始化 Controller
创建 FXMLLoader
的新实例
设置 Controller
和 view.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 个错误”所污染,fxml
和 public void methodName(){/*..*/}
中的 #methodName
之间的 link 停止工作。
有没有办法告诉 IntelliJ 从 POJO 派生 fxml 控制器class?
基于"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();
}