Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;没有为顶层元件指定控制器“;以编程方式设置控制器时_Java_Intellij Idea_Javafx - Fatal编程技术网

Java &引用;没有为顶层元件指定控制器“;以编程方式设置控制器时

Java &引用;没有为顶层元件指定控制器“;以编程方式设置控制器时,java,intellij-idea,javafx,Java,Intellij Idea,Javafx,我有一个FXML文件,其中包含带有onMouseClicked属性的按钮。我没有在FXML中设置控制器,因为我有构造函数注入的数据要提供给控制器 <Button mnemonicParsing="false" onMouseClicked="#newWidgetRequestButtonClicked" text="New Widget..." /> 我的问题在于IntelliJ对.fxml文件的检查。每次出现函数引用时,它都会报告“错误:(45,54)没有为顶层元素指定控制器

我有一个FXML文件,其中包含带有onMouseClicked属性的按钮。我没有在FXML中设置控制器,因为我有构造函数注入的数据要提供给控制器

  <Button mnemonicParsing="false" onMouseClicked="#newWidgetRequestButtonClicked" text="New Widget..." />
我的问题在于IntelliJ对.fxml文件的检查。每次出现函数引用时,它都会报告“错误:(45,54)没有为顶层元素指定控制器”。我正在查看IntelliJ的检查规则,但在JavaFX部分中没有看到此规则。同样,程序构建和运行都很好,因此它不是真正的编译错误。我想禁用此错误通知


如何避免此错误?

您需要添加顶级元素fx:controller

假设您有一个基本的fxml文件,其中有一个带有按钮的just anchor窗格,如下面的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>
fx:controller=“com.example.controller”
行表示我的控件类是controller,它位于com.example包中


此外,您的元素id应该以fx开头,如示例中所示(
fx:id=“buttoneg”
)。

即使如此,我也不喜欢这些通知。我按程序设置控制器。要禁用它,需要将突出显示级别设置为“无”。 要执行此操作,请打开fxml文件,在右侧最底部,您将看到一个hector图标。单击hector图标并通过拖动滑块将高光级别设置为“无”

要使更改生效,您需要重新启动IDE。仅该文件的高亮显示将设置为“无”。在我们再次将其他文件的突出显示级别设置为“无”之前,它们的突出显示行为不会发生任何更改

如果找不到hector图标,请使用以下链接。

如果您指定了该控制器,那么当您尝试访问控制器类中的文本字段、按钮时,您将得到nullpointer异常。OP说:“我没有在FXML中设置控制器,因为我有构造函数注入的数据要提供给控制器。”我也有同样的问题。有没有办法将此报告给JetBrains,以便他们可以在更新中修复?当然,您可以从intellij网站发送支持电子邮件。
<?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>
<?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>