Ste*_*bbi 9 java javafx intellij-idea
我有一个FXML文件,其中包含带有onMouseClicked属性的按钮.我没有在FXML中设置一个控制器,因为我有构造函数注入我想要提供给Controller的数据.
<Button mnemonicParsing="false" onMouseClicked="#newWidgetRequestButtonClicked" text="New Widget..." />
Run Code Online (Sandbox Code Playgroud)
我以编程方式设置Controller,我的控制器包含FXML中指定的方法.Controller函数执行,一切正常.
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
MyController controller = new MyController(...);
loader.setController(controller);
Run Code Online (Sandbox Code Playgroud)
我的问题在于IntelliJ检查.fxml文件.每次出现函数引用时,它都会报告"错误:(45,54)没有为顶级元素指定控制器".我正在查看IntelliJ的检查规则,并且在JavaFX部分中没有看到此规则.同样,程序构建并运行得很好,因此它不是真正的编译错误.我想禁用此错误通知.
我怎样才能避免这个错误?
您需要添加顶级元素 fx:controller。
假设您有一个基本的 fxml 文件,其中有一个带有像下面 fxml 一样的按钮的锚定窗格。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button layoutX="102.0" layoutY="50.0" mnemonicParsing="false" text="Button" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您的顶级元素将是锚点窗格。如果你想使用动作按钮,就像onMouseClicked你需要告诉 fxml 你的控制器类在你的顶级元素(在这种情况下是锚窗格)中,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.Controller">
<children>
<Button fx:id="buttonExample" layoutX="102.0" layoutY="50.0" mnemonicParsing="false" text="Button" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
fx:controller="com.example.Controller"行说我的控件类是控制器,它在com.example 包中。
此外,您的元素 ID 应该像示例 ( ) 中那样以fx开头fx:id="buttonExample"。
甚至,我不喜欢那些通知。我以编程方式设置控制器。要禁用它,您需要将突出显示级别设置为无。为此,打开您的 fxml 文件,在右侧的最底部,您将看到一个赫克托图标。单击赫克托图标并通过拖动滑块将高亮级别设置为无。
您需要重新启动 IDE 才能使更改生效。突出显示将仅为该文件设置为无。在我们将它们的高亮级别再次设置为无之前,其他文件的高亮行为不会发生任何变化。
如果找不到赫克托图标,请使用以下链接。 https://www.jetbrains.com/help/idea/status-bar.html
| 归档时间: |
|
| 查看次数: |
6982 次 |
| 最近记录: |